{
  "schema_version": 1,
  "generated_at": "2026-06-01T08:26:32Z",
  "generator": "your-trainer/tools/scripts/generate_workout_library.py@v1",
  "workouts": [
    {
      "slug": "hr-ladder-z2-z3-20min-high-cadence",
      "name": "HR Ladder Z2↔Z3 20min · High cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1980,
      "intensity_summary": "8min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z2-z3-20min-high-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ladder-z2-z3-20min-low-cadence",
      "name": "HR Ladder Z2↔Z3 20min · Low cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1980,
      "intensity_summary": "8min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z2-z3-20min-low-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ladder-z2-z3-20min-standard-cadence",
      "name": "HR Ladder Z2↔Z3 20min · Standard cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1980,
      "intensity_summary": "8min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z2-z3-20min-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ladder-z3-z4-16min-high-cadence",
      "name": "HR Ladder Z3↔Z4 16min · High cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1740,
      "intensity_summary": "6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z3-z4-16min-high-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ladder-z3-z4-16min-low-cadence",
      "name": "HR Ladder Z3↔Z4 16min · Low cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1740,
      "intensity_summary": "6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z3-z4-16min-low-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ladder-z3-z4-16min-standard-cadence",
      "name": "HR Ladder Z3↔Z4 16min · Standard cadence",
      "set": "hr-zone",
      "category": "adjacent-ladders",
      "duration_seconds": 1740,
      "intensity_summary": "6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/adjacent-ladders/hr-ladder-z3-z4-16min-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ceiling-drift-35min-ceiling-z3",
      "name": "HR Ceiling Drift (35min, ceiling Z3)",
      "set": "hr-zone",
      "category": "drift-drills",
      "duration_seconds": 2940,
      "intensity_summary": "3×10min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "cardiovascular-control"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/drift-drills/hr-ceiling-drift-35min-ceiling-z3.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-floor-drift-35min-floor-z2",
      "name": "HR Floor Drift (35min, floor Z2)",
      "set": "hr-zone",
      "category": "drift-drills",
      "duration_seconds": 3120,
      "intensity_summary": "3×10min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "cardiovascular-control"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/drift-drills/hr-floor-drift-35min-floor-z2.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-negative-split-40min-z2-z3-build",
      "name": "HR Negative Split (40min, Z2→Z3 build)",
      "set": "hr-zone",
      "category": "drift-drills",
      "duration_seconds": 3240,
      "intensity_summary": "20min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "cardiovascular-control",
        "race-pacing",
        "mental-discipline"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/drift-drills/hr-negative-split-40min-z2-z3-build.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-z2-base-30min-high-cadence",
      "name": "HR-Zone Z2 Base 30min · High cadence",
      "set": "hr-zone",
      "category": "endurance-z2-hr",
      "duration_seconds": 2580,
      "intensity_summary": "30min @ HR Z2",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 4
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/endurance-z2-hr/hr-zone-z2-base-30min-high-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-z2-base-30min-low-cadence",
      "name": "HR-Zone Z2 Base 30min · Low cadence",
      "set": "hr-zone",
      "category": "endurance-z2-hr",
      "duration_seconds": 2580,
      "intensity_summary": "30min @ HR Z2",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 4
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/endurance-z2-hr/hr-zone-z2-base-30min-low-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-z2-base-30min-standard-cadence",
      "name": "HR-Zone Z2 Base 30min · Standard cadence",
      "set": "hr-zone",
      "category": "endurance-z2-hr",
      "duration_seconds": 2580,
      "intensity_summary": "30min @ HR Z2",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 4
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/endurance-z2-hr/hr-zone-z2-base-30min-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-progression-z1-z3-12min-step",
      "name": "HR-Zone Progression Z1→Z3 (12min/step)",
      "set": "hr-zone",
      "category": "progressions",
      "duration_seconds": 2820,
      "intensity_summary": "12min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 4
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/progressions/hr-zone-progression-z1-z3-12min-step.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-progression-z1-z3-6min-step",
      "name": "HR-Zone Progression Z1→Z3 (6min/step)",
      "set": "hr-zone",
      "category": "progressions",
      "duration_seconds": 1740,
      "intensity_summary": "6min @ HR Z3",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 4
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/progressions/hr-zone-progression-z1-z3-6min-step.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-progression-z1-z4-12min-step",
      "name": "HR-Zone Progression Z1→Z4 (12min/step)",
      "set": "hr-zone",
      "category": "progressions",
      "duration_seconds": 4260,
      "intensity_summary": "12min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/progressions/hr-zone-progression-z1-z4-12min-step.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-zone-progression-z1-z4-6min-step",
      "name": "HR-Zone Progression Z1→Z4 (6min/step)",
      "set": "hr-zone",
      "category": "progressions",
      "duration_seconds": 2460,
      "intensity_summary": "6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/progressions/hr-zone-progression-z1-z4-6min-step.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-recovery-z1-20min-high-cadence",
      "name": "HR Recovery Z1 20min · High cadence",
      "set": "hr-zone",
      "category": "recovery",
      "duration_seconds": 1680,
      "intensity_summary": "20min @ HR Z1",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 2
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "blood-flow",
        "neuromuscular-spin"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/recovery/hr-recovery-z1-20min-high-cadence.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z1",
          "p": 20
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-recovery-z1-20min-low-cadence",
      "name": "HR Recovery Z1 20min · Low cadence",
      "set": "hr-zone",
      "category": "recovery",
      "duration_seconds": 1680,
      "intensity_summary": "20min @ HR Z1",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 2
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "blood-flow",
        "neuromuscular-spin"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/recovery/hr-recovery-z1-20min-low-cadence.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z1",
          "p": 20
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-recovery-z1-20min-standard-cadence",
      "name": "HR Recovery Z1 20min · Standard cadence",
      "set": "hr-zone",
      "category": "recovery",
      "duration_seconds": 1680,
      "intensity_summary": "20min @ HR Z1",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 2
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "blood-flow",
        "neuromuscular-spin"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/recovery/hr-recovery-z1-20min-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z1",
          "p": 20
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-ramp-test-4-steps-3-min-each",
      "name": "HR Ramp Test (4 steps, 3 min each)",
      "set": "hr-zone",
      "category": "tests",
      "duration_seconds": 1680,
      "intensity_summary": "3min @ HR Z5",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic",
        "aerobic-endurance",
        "lactate-threshold",
        "cardiovascular-control"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/tests/hr-ramp-test-4-steps-3-min-each.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-2x10min",
      "name": "HR Z4 Threshold 2×10min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 2820,
      "intensity_summary": "2×10min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-2x10min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-2x12min",
      "name": "HR Z4 Threshold 2×12min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 3060,
      "intensity_summary": "2×12min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-2x12min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-2x6min",
      "name": "HR Z4 Threshold 2×6min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 2340,
      "intensity_summary": "2×6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-2x6min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-2x8min",
      "name": "HR Z4 Threshold 2×8min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 2580,
      "intensity_summary": "2×8min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 6
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-2x8min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-3x10min",
      "name": "HR Z4 Threshold 3×10min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 3840,
      "intensity_summary": "3×10min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-3x10min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-3x6min",
      "name": "HR Z4 Threshold 3×6min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 3120,
      "intensity_summary": "3×6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-3x6min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-3x8min",
      "name": "HR Z4 Threshold 3×8min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 3480,
      "intensity_summary": "3×8min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 8
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-3x8min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-4x10min",
      "name": "HR Z4 Threshold 4×10min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 4860,
      "intensity_summary": "4×10min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-4x10min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-4x12min",
      "name": "HR Z4 Threshold 4×12min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 5340,
      "intensity_summary": "4×12min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-4x12min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-4x6min",
      "name": "HR Z4 Threshold 4×6min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 3900,
      "intensity_summary": "4×6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-4x6min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-4x8min",
      "name": "HR Z4 Threshold 4×8min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 4380,
      "intensity_summary": "4×8min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-4x8min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-5x10min",
      "name": "HR Z4 Threshold 5×10min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 5880,
      "intensity_summary": "5×10min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-5x10min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-5x6min",
      "name": "HR Z4 Threshold 5×6min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 4680,
      "intensity_summary": "5×6min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-5x6min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "hr-z4-threshold-5x8min",
      "name": "HR Z4 Threshold 5×8min",
      "set": "hr-zone",
      "category": "threshold",
      "duration_seconds": 5280,
      "intensity_summary": "5×8min @ HR Z4",
      "tss": 0.0,
      "intensity_factor": 0.0,
      "difficulty_score": {
        "overall": 10
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": false,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/hr-zone/threshold/hr-z4-threshold-5x8min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z1",
          "p": 20,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 40
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 20,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "requires_hrm": true,
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      }
    },
    {
      "slug": "anaerobic-4x2min-at-135pct",
      "name": "Anaerobic 4×2min @ 135%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2220,
      "intensity_summary": "4×2min @ 135% FTP",
      "tss": 53.1,
      "intensity_factor": 0.928,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.6,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.4
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-4x2min-at-135pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-4x2min-at-135pct.zwo"
    },
    {
      "slug": "anaerobic-4x3min-at-130pct",
      "name": "Anaerobic 4×3min @ 130%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2700,
      "intensity_summary": "4×3min @ 130% FTP",
      "tss": 66.9,
      "intensity_factor": 0.944,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.571,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.429
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-4x3min-at-130pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-4x3min-at-130pct.zwo"
    },
    {
      "slug": "anaerobic-5x1min-at-140pct",
      "name": "Anaerobic 5×1min @ 140%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2220,
      "intensity_summary": "5×1min @ 140% FTP",
      "tss": 44.0,
      "intensity_factor": 0.845,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.75,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.25
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-5x1min-at-140pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-5x1min-at-140pct.zwo"
    },
    {
      "slug": "anaerobic-5x1min-at-140pct-stepped-spin-down",
      "name": "Anaerobic 5×1min @ 140% (Stepped Spin-Down)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2220,
      "intensity_summary": "5×1min @ 140% FTP",
      "tss": 47.8,
      "intensity_factor": 0.88,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.625,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.125,
        "z5": 0.25
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-5x1min-at-140pct-stepped-spin-down.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-5x1min-at-140pct-stepped-spin-down.zwo"
    },
    {
      "slug": "anaerobic-5x3min-at-130pct",
      "name": "Anaerobic 5×3min @ 130%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3120,
      "intensity_summary": "5×3min @ 130% FTP",
      "tss": 79.8,
      "intensity_factor": 0.96,
      "difficulty_score": {
        "overall": 8,
        "z1": 0.571,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.429
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-5x3min-at-130pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-5x3min-at-130pct.zwo"
    },
    {
      "slug": "anaerobic-6x3min-at-130pct",
      "name": "Anaerobic 6×3min @ 130%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3540,
      "intensity_summary": "6×3min @ 130% FTP",
      "tss": 92.7,
      "intensity_factor": 0.971,
      "difficulty_score": {
        "overall": 8,
        "z1": 0.571,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.429
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-6x3min-at-130pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-6x3min-at-130pct.zwo"
    },
    {
      "slug": "anaerobic-8x30s-at-150pct",
      "name": "Anaerobic 8×30s @ 150%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3180,
      "intensity_summary": "8×30s @ 150% FTP",
      "tss": 49.0,
      "intensity_factor": 0.745,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.889,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.111
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-8x30s-at-150pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-8x30s-at-150pct.zwo"
    },
    {
      "slug": "anaerobic-8x30s-at-150pct-stepped-spin-down",
      "name": "Anaerobic 8×30s @ 150% (Stepped Spin-Down)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3180,
      "intensity_summary": "8×30s @ 150% FTP",
      "tss": 57.2,
      "intensity_factor": 0.804,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.778,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.111,
        "z5": 0.111
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-8x30s-at-150pct-stepped-spin-down.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-8x30s-at-150pct-stepped-spin-down.zwo"
    },
    {
      "slug": "anaerobic-ladder-20-30-45-60-45-30-20s-at-140pct",
      "name": "Anaerobic Ladder (20-30-45-60-45-30-20s @ 140%)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 1730,
      "intensity_summary": "7×20s @ 140% FTP",
      "tss": 33.2,
      "intensity_factor": 0.831,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.648,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.352
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/anaerobic-ladder-20-30-45-60-45-30-20s-at-140pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/anaerobic-ladder-20-30-45-60-45-30-20s-at-140pct.zwo"
    },
    {
      "slug": "cresting-climbs-10x-40s-at-130pct-8s-at-180pct-kick",
      "name": "Cresting Climbs 10× (40s @ 130% + 8s @ 180% kick)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3300,
      "intensity_summary": "10×8s @ 180% FTP",
      "tss": 60.9,
      "intensity_factor": 0.815,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.789,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.211
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cresting-climbs-10x-40s-at-130pct-8s-at-180pct-kick.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cresting-climbs-10x-40s-at-130pct-8s-at-180pct-kick.zwo"
    },
    {
      "slug": "cresting-climbs-12x-30s-at-130pct-8s-at-175pct-kick",
      "name": "Cresting Climbs 12× (30s @ 130% + 8s @ 175% kick)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2916,
      "intensity_summary": "12×8s @ 175% FTP",
      "tss": 54.4,
      "intensity_factor": 0.82,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.759,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.241
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cresting-climbs-12x-30s-at-130pct-8s-at-175pct-kick.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cresting-climbs-12x-30s-at-130pct-8s-at-175pct-kick.zwo"
    },
    {
      "slug": "cresting-climbs-4x-90s-at-130pct-15s-at-165pct-kick",
      "name": "Cresting Climbs 4× (90s @ 130% + 15s @ 165% kick)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2640,
      "intensity_summary": "4×15s @ 165% FTP",
      "tss": 53.4,
      "intensity_factor": 0.853,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.741,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.259
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cresting-climbs-4x-90s-at-130pct-15s-at-165pct-kick.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 165
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 90,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 165
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 90,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 165
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 90,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 165
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cresting-climbs-4x-90s-at-130pct-15s-at-165pct-kick.zwo"
    },
    {
      "slug": "cresting-climbs-6x-60s-at-140pct-15s-at-170pct-kick",
      "name": "Cresting Climbs 6× (60s @ 140% + 15s @ 170% kick)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2910,
      "intensity_summary": "6×15s @ 170% FTP",
      "tss": 64.6,
      "intensity_factor": 0.894,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.762,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.238
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cresting-climbs-6x-60s-at-140pct-15s-at-170pct-kick.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cresting-climbs-6x-60s-at-140pct-15s-at-170pct-kick.zwo"
    },
    {
      "slug": "cresting-climbs-8x-45s-at-135pct-10s-at-175pct-kick",
      "name": "Cresting Climbs 8× (45s @ 135% + 10s @ 175% kick)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2900,
      "intensity_summary": "8×10s @ 175% FTP",
      "tss": 58.7,
      "intensity_factor": 0.853,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.766,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.234
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cresting-climbs-8x-45s-at-135pct-10s-at-175pct-kick.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cresting-climbs-8x-45s-at-135pct-10s-at-175pct-kick.zwo"
    },
    {
      "slug": "cyclocross-sprints-10x30s-max-full-150s-recovery",
      "name": "Cyclocross Sprints (10×30s max, full 150s recovery)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2820,
      "intensity_summary": "10×30s @ 170% FTP",
      "tss": 59.6,
      "intensity_factor": 0.872,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "cx",
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cyclocross-sprints-10x30s-max-full-150s-recovery.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cyclocross-sprints-10x30s-max-full-150s-recovery.zwo"
    },
    {
      "slug": "cyclocross-sprints-12x30s-max-full-150s-recovery",
      "name": "Cyclocross Sprints (12×30s max, full 150s recovery)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3180,
      "intensity_summary": "12×30s @ 170% FTP",
      "tss": 68.8,
      "intensity_factor": 0.883,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "cx",
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cyclocross-sprints-12x30s-max-full-150s-recovery.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cyclocross-sprints-12x30s-max-full-150s-recovery.zwo"
    },
    {
      "slug": "cyclocross-sprints-8x30s-max-full-150s-recovery",
      "name": "Cyclocross Sprints (8×30s max, full 150s recovery)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2460,
      "intensity_summary": "8×30s @ 170% FTP",
      "tss": 50.3,
      "intensity_factor": 0.858,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "cx",
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/cyclocross-sprints-8x30s-max-full-150s-recovery.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/cyclocross-sprints-8x30s-max-full-150s-recovery.zwo"
    },
    {
      "slug": "mtb-style-intervals-4x-20s-burst-30s-soft-5min-climb",
      "name": "MTB-Style Intervals (4× 20s burst + 30s soft + 5min climb)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2300,
      "intensity_summary": "4×20s @ 160% FTP",
      "tss": 42.5,
      "intensity_factor": 0.816,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.086,
        "z3": 0.857,
        "z4": 0.0,
        "z5": 0.057
      },
      "discipline_tags": [
        "mtb",
        "cx",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/mtb-style-intervals-4x-20s-burst-30s-soft-5min-climb.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/mtb-style-intervals-4x-20s-burst-30s-soft-5min-climb.zwo"
    },
    {
      "slug": "mtb-style-intervals-5x-20s-burst-30s-soft-3min-climb",
      "name": "MTB-Style Intervals (5× 20s burst + 30s soft + 3min climb)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2050,
      "intensity_summary": "5×20s @ 160% FTP",
      "tss": 38.5,
      "intensity_factor": 0.822,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.13,
        "z3": 0.783,
        "z4": 0.0,
        "z5": 0.087
      },
      "discipline_tags": [
        "mtb",
        "cx",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/mtb-style-intervals-5x-20s-burst-30s-soft-3min-climb.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/mtb-style-intervals-5x-20s-burst-30s-soft-3min-climb.zwo"
    },
    {
      "slug": "mtb-style-intervals-6x-30s-burst-30s-soft-3min-climb",
      "name": "MTB-Style Intervals (6× 30s burst + 30s soft + 3min climb)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2340,
      "intensity_summary": "6×30s @ 160% FTP",
      "tss": 51.7,
      "intensity_factor": 0.892,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.125,
        "z3": 0.75,
        "z4": 0.0,
        "z5": 0.125
      },
      "discipline_tags": [
        "mtb",
        "cx",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/mtb-style-intervals-6x-30s-burst-30s-soft-3min-climb.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 30,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/mtb-style-intervals-6x-30s-burst-30s-soft-3min-climb.zwo"
    },
    {
      "slug": "pyramid-sprints-10-20-30-20-10s-at-175pct",
      "name": "Pyramid Sprints (10-20-30-20-10s @ 175%)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 1590,
      "intensity_summary": "5×10s @ 175% FTP",
      "tss": 25.0,
      "intensity_factor": 0.752,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.842,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.158
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/pyramid-sprints-10-20-30-20-10s-at-175pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/pyramid-sprints-10-20-30-20-10s-at-175pct.zwo"
    },
    {
      "slug": "short-sprint-pyramid-5-10-15-20-15-10-5s-at-200pct",
      "name": "Short Sprint Pyramid (5-10-15-20-15-10-5s @ 200%)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 1820,
      "intensity_summary": "7×5s @ 200% FTP",
      "tss": 26.0,
      "intensity_factor": 0.717,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.9,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.1
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/short-sprint-pyramid-5-10-15-20-15-10-5s-at-200pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/short-sprint-pyramid-5-10-15-20-15-10-5s-at-200pct.zwo"
    },
    {
      "slug": "sprints-6x10s-at-200pct",
      "name": "Sprints 6×10s @ 200%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2160,
      "intensity_summary": "6×10s @ 200% FTP",
      "tss": 24.7,
      "intensity_factor": 0.642,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.947,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.053
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/sprints-6x10s-at-200pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/sprints-6x10s-at-200pct.zwo"
    },
    {
      "slug": "sprints-6x15s-at-200pct",
      "name": "Sprints 6×15s @ 200%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2550,
      "intensity_summary": "6×15s @ 200% FTP",
      "tss": 34.2,
      "intensity_factor": 0.695,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.941,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.059
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/sprints-6x15s-at-200pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/sprints-6x15s-at-200pct.zwo"
    },
    {
      "slug": "sprints-6x15s-at-200pct-stepped-spin-down",
      "name": "Sprints 6×15s @ 200% (Stepped Spin-Down)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2550,
      "intensity_summary": "6×15s @ 200% FTP",
      "tss": 42.8,
      "intensity_factor": 0.777,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.824,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.118,
        "z5": 0.059
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/sprints-6x15s-at-200pct-stepped-spin-down.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 210,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/sprints-6x15s-at-200pct-stepped-spin-down.zwo"
    },
    {
      "slug": "sprints-8x15s-at-175pct",
      "name": "Sprints 8×15s @ 175%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2580,
      "intensity_summary": "8×15s @ 175% FTP",
      "tss": 33.1,
      "intensity_factor": 0.68,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.923,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/sprints-8x15s-at-175pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/sprints-8x15s-at-175pct.zwo"
    },
    {
      "slug": "sprints-8x15s-at-175pct-stepped-spin-down",
      "name": "Sprints 8×15s @ 175% (Stepped Spin-Down)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2580,
      "intensity_summary": "8×15s @ 175% FTP",
      "tss": 42.9,
      "intensity_factor": 0.773,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.769,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.154,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/sprints-8x15s-at-175pct-stepped-spin-down.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 175
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/sprints-8x15s-at-175pct-stepped-spin-down.zwo"
    },
    {
      "slug": "standing-start-sprints-10x5s-max-from-near-stop",
      "name": "Standing-Start Sprints (10×5s max from near-stop)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3570,
      "intensity_summary": "10×5s @ 250% FTP",
      "tss": 28.6,
      "intensity_factor": 0.537,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.98,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.02
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power",
        "high-torque"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/standing-start-sprints-10x5s-max-from-near-stop.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/standing-start-sprints-10x5s-max-from-near-stop.zwo"
    },
    {
      "slug": "standing-start-sprints-6x5s-max-from-near-stop",
      "name": "Standing-Start Sprints (6×5s max from near-stop)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2550,
      "intensity_summary": "6×5s @ 250% FTP",
      "tss": 21.0,
      "intensity_factor": 0.544,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.98,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.02
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power",
        "high-torque"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/standing-start-sprints-6x5s-max-from-near-stop.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/standing-start-sprints-6x5s-max-from-near-stop.zwo"
    },
    {
      "slug": "standing-start-sprints-6x8s-max-from-near-stop",
      "name": "Standing-Start Sprints (6×8s max from near-stop)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 2568,
      "intensity_summary": "6×8s @ 250% FTP",
      "tss": 24.8,
      "intensity_factor": 0.59,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.969,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.031
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power",
        "high-torque"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/standing-start-sprints-6x8s-max-from-near-stop.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 8,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/standing-start-sprints-6x8s-max-from-near-stop.zwo"
    },
    {
      "slug": "standing-start-sprints-8x5s-max-from-near-stop",
      "name": "Standing-Start Sprints (8×5s max from near-stop)",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 3060,
      "intensity_summary": "8×5s @ 250% FTP",
      "tss": 24.8,
      "intensity_factor": 0.54,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.98,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.02
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-power",
        "sprint-power",
        "high-torque"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/standing-start-sprints-8x5s-max-from-near-stop.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 30
        },
        {
          "d": 5,
          "z": "Z5",
          "p": 250
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/standing-start-sprints-8x5s-max-from-near-stop.zwo"
    },
    {
      "slug": "tabata-8x20s-at-170pct",
      "name": "Tabata 8×20s @ 170%",
      "set": "power",
      "category": "anaerobic-sprints",
      "duration_seconds": 1260,
      "intensity_summary": "8×20s @ 170% FTP",
      "tss": 28.3,
      "intensity_factor": 0.9,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.667
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "anaerobic-capacity",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/anaerobic-sprints/tabata-8x20s-at-170pct.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 170
        },
        {
          "d": 10,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/anaerobic-sprints/tabata-8x20s-at-170pct.zwo"
    },
    {
      "slug": "cadence-stepped-z2-120min-at-65pct-ftp-90-75-100-rpm-blocks",
      "name": "Cadence-Stepped Z2 (120min @ 65% FTP, 90/75/100 RPM blocks)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 7800,
      "intensity_summary": "3×40min @ 65% FTP",
      "tss": 89.6,
      "intensity_factor": 0.643,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "cadence-transition"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/cadence-stepped-z2-120min-at-65pct-ftp-90-75-100-rpm-blocks.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 2400,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 2400,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/cadence-stepped-z2-120min-at-65pct-ftp-90-75-100-rpm-blocks.zwo"
    },
    {
      "slug": "cadence-stepped-z2-60min-at-65pct-ftp-90-75-100-rpm-blocks",
      "name": "Cadence-Stepped Z2 (60min @ 65% FTP, 90/75/100 RPM blocks)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 4200,
      "intensity_summary": "3×20min @ 65% FTP",
      "tss": 47.3,
      "intensity_factor": 0.637,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "cadence-transition"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/cadence-stepped-z2-60min-at-65pct-ftp-90-75-100-rpm-blocks.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/cadence-stepped-z2-60min-at-65pct-ftp-90-75-100-rpm-blocks.zwo"
    },
    {
      "slug": "cadence-stepped-z2-90min-at-65pct-ftp-90-75-100-rpm-blocks",
      "name": "Cadence-Stepped Z2 (90min @ 65% FTP, 90/75/100 RPM blocks)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 6000,
      "intensity_summary": "3×30min @ 65% FTP",
      "tss": 68.4,
      "intensity_factor": 0.641,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "cadence-transition"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/cadence-stepped-z2-90min-at-65pct-ftp-90-75-100-rpm-blocks.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/cadence-stepped-z2-90min-at-65pct-ftp-90-75-100-rpm-blocks.zwo"
    },
    {
      "slug": "long-z2-with-strides-120min-at-65pct-10x10s-strides",
      "name": "Long Z2 with Strides (120min @ 65% + 10×10s strides)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 7794,
      "intensity_summary": "10×10s @ 150% FTP",
      "tss": 91.9,
      "intensity_factor": 0.652,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.07,
        "z2": 0.917,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.014
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "neuromuscular-touch"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/long-z2-with-strides-120min-at-65pct-10x10s-strides.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 666,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/long-z2-with-strides-120min-at-65pct-10x10s-strides.zwo"
    },
    {
      "slug": "long-z2-with-strides-60min-at-65pct-6x10s-strides",
      "name": "Long Z2 with Strides (60min @ 65% + 6×10s strides)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 4200,
      "intensity_summary": "6×10s @ 150% FTP",
      "tss": 48.8,
      "intensity_factor": 0.646,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.083,
        "z2": 0.9,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.017
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "neuromuscular-touch"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/long-z2-with-strides-60min-at-65pct-6x10s-strides.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 528,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 528,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 528,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 528,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 528,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/long-z2-with-strides-60min-at-65pct-6x10s-strides.zwo"
    },
    {
      "slug": "long-z2-with-strides-90min-at-65pct-8x10s-strides",
      "name": "Long Z2 with Strides (90min @ 65% + 8×10s strides)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 5999,
      "intensity_summary": "8×10s @ 150% FTP",
      "tss": 70.4,
      "intensity_factor": 0.65,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.074,
        "z2": 0.911,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.015
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "neuromuscular-touch"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/long-z2-with-strides-90min-at-65pct-8x10s-strides.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 617,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/long-z2-with-strides-90min-at-65pct-8x10s-strides.zwo"
    },
    {
      "slug": "steady-z2-endurance-60min-at-65pct-ftp",
      "name": "Steady Z2 Endurance (60min @ 65% FTP)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 4200,
      "intensity_summary": "60min @ 65% FTP",
      "tss": 47.3,
      "intensity_factor": 0.637,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/steady-z2-endurance-60min-at-65pct-ftp.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 3600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/steady-z2-endurance-60min-at-65pct-ftp.zwo"
    },
    {
      "slug": "steady-z2-endurance-90min-at-65pct-ftp",
      "name": "Steady Z2 Endurance (90min @ 65% FTP)",
      "set": "power",
      "category": "endurance",
      "duration_seconds": 6000,
      "intensity_summary": "90min @ 65% FTP",
      "tss": 68.4,
      "intensity_factor": 0.641,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/endurance/steady-z2-endurance-90min-at-65pct-ftp.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 5400,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/endurance/steady-z2-endurance-90min-at-65pct-ftp.zwo"
    },
    {
      "slug": "bookended-threshold-2x12min-30s-at-125pct-endcaps-100pct-middle",
      "name": "Bookended Threshold 2×12min (30s @ 125% endcaps / 100% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2940,
      "intensity_summary": "4×30s @ 125% FTP",
      "tss": 62.5,
      "intensity_factor": 0.875,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.294,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.647,
        "z5": 0.059
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-2x12min-30s-at-125pct-endcaps-100pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 660,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 660,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-2x12min-30s-at-125pct-endcaps-100pct-middle.zwo"
    },
    {
      "slug": "bookended-threshold-3x6min-30s-at-120pct-endcaps-105pct-middle",
      "name": "Bookended Threshold 3×6min (30s @ 120% endcaps / 105% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "6×30s @ 120% FTP",
      "tss": 57.3,
      "intensity_factor": 0.874,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.1
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-3x6min-30s-at-120pct-endcaps-105pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-3x6min-30s-at-120pct-endcaps-105pct-middle.zwo"
    },
    {
      "slug": "bookended-threshold-3x8min-30s-at-125pct-endcaps-105pct-middle",
      "name": "Bookended Threshold 3×8min (30s @ 125% endcaps / 105% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3240,
      "intensity_summary": "6×30s @ 125% FTP",
      "tss": 72.0,
      "intensity_factor": 0.894,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.538,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-3x8min-30s-at-125pct-endcaps-105pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-3x8min-30s-at-125pct-endcaps-105pct-middle.zwo"
    },
    {
      "slug": "bookended-threshold-4x6min-30s-at-120pct-endcaps-108pct-middle",
      "name": "Bookended Threshold 4×6min (30s @ 120% endcaps / 108% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3300,
      "intensity_summary": "8×30s @ 120% FTP",
      "tss": 75.4,
      "intensity_factor": 0.907,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.1
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-4x6min-30s-at-120pct-endcaps-108pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 108
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 108
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 108
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 108
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-4x6min-30s-at-120pct-endcaps-108pct-middle.zwo"
    },
    {
      "slug": "bookended-threshold-4x8min-30s-at-120pct-endcaps-100pct-middle",
      "name": "Bookended Threshold 4×8min (30s @ 120% endcaps / 100% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4020,
      "intensity_summary": "8×30s @ 120% FTP",
      "tss": 84.2,
      "intensity_factor": 0.868,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.538,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-4x8min-30s-at-120pct-endcaps-100pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-4x8min-30s-at-120pct-endcaps-100pct-middle.zwo"
    },
    {
      "slug": "bookended-threshold-5x5min-45s-at-115pct-endcaps-100pct-middle",
      "name": "Bookended Threshold 5×5min (45s @ 115% endcaps / 100% middle)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3600,
      "intensity_summary": "10×45s @ 115% FTP",
      "tss": 73.5,
      "intensity_factor": 0.857,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.444,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.389,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/bookended-threshold-5x5min-45s-at-115pct-endcaps-100pct-middle.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/bookended-threshold-5x5min-45s-at-115pct-endcaps-100pct-middle.zwo"
    },
    {
      "slug": "death-by-intervals-6min-ceiling-at-100pct",
      "name": "Death-by-Intervals (6min ceiling @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2880,
      "intensity_summary": "6×1min @ 100% FTP",
      "tss": 55.4,
      "intensity_factor": 0.832,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.364,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.636,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/death-by-intervals-6min-ceiling-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/death-by-intervals-6min-ceiling-at-100pct.zwo"
    },
    {
      "slug": "death-by-intervals-8min-ceiling-at-100pct",
      "name": "Death-by-Intervals (8min ceiling @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4020,
      "intensity_summary": "8×1min @ 100% FTP",
      "tss": 84.1,
      "intensity_factor": 0.868,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.308,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.692,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/death-by-intervals-8min-ceiling-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/death-by-intervals-8min-ceiling-at-100pct.zwo"
    },
    {
      "slug": "force-threshold-3x6min-at-100pct-60-rpm",
      "name": "Force Threshold 3×6min @ 100% / 60 RPM",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "3×6min @ 100% FTP",
      "tss": 50.2,
      "intensity_factor": 0.818,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.6,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/force-threshold-3x6min-at-100pct-60-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/force-threshold-3x6min-at-100pct-60-rpm.zwo"
    },
    {
      "slug": "force-threshold-3x6min-at-95pct-55-rpm",
      "name": "Force Threshold 3×6min @ 95% / 55 RPM",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "3×6min @ 95% FTP",
      "tss": 45.9,
      "intensity_factor": 0.782,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.6,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/force-threshold-3x6min-at-95pct-55-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/force-threshold-3x6min-at-95pct-55-rpm.zwo"
    },
    {
      "slug": "force-threshold-4x5min-at-95pct-55-rpm",
      "name": "Force Threshold 4×5min @ 95% / 55 RPM",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2820,
      "intensity_summary": "4×5min @ 95% FTP",
      "tss": 49.0,
      "intensity_factor": 0.791,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.375,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.625,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/force-threshold-4x5min-at-95pct-55-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/force-threshold-4x5min-at-95pct-55-rpm.zwo"
    },
    {
      "slug": "ftp-2x10min-at-100pct",
      "name": "FTP 2×10min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2580,
      "intensity_summary": "2×10min @ 100% FTP",
      "tss": 51.7,
      "intensity_factor": 0.849,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.286,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.714,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x10min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x10min-at-100pct.zwo"
    },
    {
      "slug": "ftp-2x20min-at-100pct",
      "name": "FTP 2×20min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "2×20min @ 100% FTP",
      "tss": 87.6,
      "intensity_factor": 0.899,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.2,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.8,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x20min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x20min-at-100pct.zwo"
    },
    {
      "slug": "ftp-2x20min-at-100pct-stepped-recovery",
      "name": "FTP 2×20min @ 100% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "2×20min @ 100% FTP",
      "tss": 89.4,
      "intensity_factor": 0.908,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.1,
        "z3": 0.1,
        "z4": 0.8,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x20min-at-100pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x20min-at-100pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-2x20min-at-95pct",
      "name": "FTP 2×20min @ 95%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "2×20min @ 95% FTP",
      "tss": 79.6,
      "intensity_factor": 0.857,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.2,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.8,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x20min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x20min-at-95pct.zwo"
    },
    {
      "slug": "ftp-2x20min-at-95pct-stepped-recovery",
      "name": "FTP 2×20min @ 95% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "2×20min @ 95% FTP",
      "tss": 81.5,
      "intensity_factor": 0.868,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.1,
        "z3": 0.1,
        "z4": 0.8,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x20min-at-95pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x20min-at-95pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-2x8min-at-102pct",
      "name": "FTP 2×8min @ 102%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2220,
      "intensity_summary": "2×8min @ 102% FTP",
      "tss": 44.8,
      "intensity_factor": 0.852,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.727,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x8min-at-102pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x8min-at-102pct.zwo"
    },
    {
      "slug": "ftp-2x8min-at-102pct-stepped-recovery",
      "name": "FTP 2×8min @ 102% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2220,
      "intensity_summary": "2×8min @ 102% FTP",
      "tss": 46.0,
      "intensity_factor": 0.864,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.136,
        "z3": 0.136,
        "z4": 0.727,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-2x8min-at-102pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-2x8min-at-102pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-3x15min-at-100pct",
      "name": "FTP 3×15min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4500,
      "intensity_summary": "3×15min @ 100% FTP",
      "tss": 99.7,
      "intensity_factor": 0.893,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.75,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-3x15min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-3x15min-at-100pct.zwo"
    },
    {
      "slug": "ftp-3x15min-at-100pct-stepped-recovery",
      "name": "FTP 3×15min @ 100% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4500,
      "intensity_summary": "3×15min @ 100% FTP",
      "tss": 102.4,
      "intensity_factor": 0.905,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.125,
        "z3": 0.125,
        "z4": 0.75,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-3x15min-at-100pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 150,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 150,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-3x15min-at-100pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-3x15min-at-95pct",
      "name": "FTP 3×15min @ 95%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4500,
      "intensity_summary": "3×15min @ 95% FTP",
      "tss": 90.6,
      "intensity_factor": 0.851,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.75,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-3x15min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-3x15min-at-95pct.zwo"
    },
    {
      "slug": "ftp-3x20min-at-100pct",
      "name": "FTP 3×20min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5400,
      "intensity_summary": "3×20min @ 100% FTP",
      "tss": 125.2,
      "intensity_factor": 0.914,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.2,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.8,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-3x20min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-3x20min-at-100pct.zwo"
    },
    {
      "slug": "ftp-4x10min-at-100pct",
      "name": "FTP 4×10min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4260,
      "intensity_summary": "4×10min @ 100% FTP",
      "tss": 91.7,
      "intensity_factor": 0.88,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.286,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.714,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-4x10min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-4x10min-at-100pct.zwo"
    },
    {
      "slug": "ftp-4x10min-at-100pct-stepped-recovery",
      "name": "FTP 4×10min @ 100% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4260,
      "intensity_summary": "4×10min @ 100% FTP",
      "tss": 94.6,
      "intensity_factor": 0.894,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.143,
        "z3": 0.143,
        "z4": 0.714,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-4x10min-at-100pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-4x10min-at-100pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-4x16min-at-88pct",
      "name": "FTP 4×16min @ 88%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5940,
      "intensity_summary": "4×16min @ 88% FTP",
      "tss": 106.7,
      "intensity_factor": 0.804,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.238,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.762,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-4x16min-at-88pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 960,
          "z": "Z4",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 960,
          "z": "Z4",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 960,
          "z": "Z4",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 960,
          "z": "Z4",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-4x16min-at-88pct.zwo"
    },
    {
      "slug": "ftp-4x8min-at-102pct",
      "name": "FTP 4×8min @ 102%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3540,
      "intensity_summary": "4×8min @ 102% FTP",
      "tss": 77.8,
      "intensity_factor": 0.89,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.727,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-4x8min-at-102pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-4x8min-at-102pct.zwo"
    },
    {
      "slug": "ftp-4x8min-at-102pct-stepped-recovery",
      "name": "FTP 4×8min @ 102% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3540,
      "intensity_summary": "4×8min @ 102% FTP",
      "tss": 80.1,
      "intensity_factor": 0.902,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.136,
        "z3": 0.136,
        "z4": 0.727,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-4x8min-at-102pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 102
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-4x8min-at-102pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-5x10min-at-105pct",
      "name": "FTP 5×10min @ 105%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5100,
      "intensity_summary": "5×10min @ 105% FTP",
      "tss": 122.3,
      "intensity_factor": 0.929,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.286,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.714,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x10min-at-105pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x10min-at-105pct.zwo"
    },
    {
      "slug": "ftp-5x10min-at-105pct-stepped-recovery",
      "name": "FTP 5×10min @ 105% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5100,
      "intensity_summary": "5×10min @ 105% FTP",
      "tss": 125.7,
      "intensity_factor": 0.942,
      "difficulty_score": {
        "overall": 8,
        "z1": 0.0,
        "z2": 0.143,
        "z3": 0.143,
        "z4": 0.714,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x10min-at-105pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x10min-at-105pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-5x5min-at-100pct",
      "name": "FTP 5×5min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3600,
      "intensity_summary": "5×5min @ 100% FTP",
      "tss": 67.9,
      "intensity_factor": 0.824,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.444,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.556,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x5min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x5min-at-100pct.zwo"
    },
    {
      "slug": "ftp-5x5min-at-95pct",
      "name": "FTP 5×5min @ 95%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3300,
      "intensity_summary": "5×5min @ 95% FTP",
      "tss": 59.1,
      "intensity_factor": 0.803,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.375,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.625,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x5min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x5min-at-95pct.zwo"
    },
    {
      "slug": "ftp-5x6min-at-105pct",
      "name": "FTP 5×6min @ 105%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3600,
      "intensity_summary": "5×6min @ 105% FTP",
      "tss": 80.3,
      "intensity_factor": 0.896,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.667,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x6min-at-105pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x6min-at-105pct.zwo"
    },
    {
      "slug": "ftp-5x6min-at-105pct-stepped-recovery",
      "name": "FTP 5×6min @ 105% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3600,
      "intensity_summary": "5×6min @ 105% FTP",
      "tss": 83.1,
      "intensity_factor": 0.912,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.167,
        "z3": 0.167,
        "z4": 0.667,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-5x6min-at-105pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 90,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-5x6min-at-105pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-8x4min-at-100pct",
      "name": "FTP 8×4min @ 100%",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3780,
      "intensity_summary": "8×4min @ 100% FTP",
      "tss": 77.1,
      "intensity_factor": 0.857,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.667,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-8x4min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-8x4min-at-100pct.zwo"
    },
    {
      "slug": "ftp-8x4min-at-100pct-stepped-recovery",
      "name": "FTP 8×4min @ 100% (Stepped Recovery)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3780,
      "intensity_summary": "8×4min @ 100% FTP",
      "tss": 80.5,
      "intensity_factor": 0.876,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.167,
        "z3": 0.167,
        "z4": 0.667,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-8x4min-at-100pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-8x4min-at-100pct-stepped-recovery.zwo"
    },
    {
      "slug": "ftp-progression-z2-z4-z2-5min-step",
      "name": "FTP Progression Z2→Z4→Z2 (5min/step)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2340,
      "intensity_summary": "5min @ 100% FTP",
      "tss": 38.0,
      "intensity_factor": 0.765,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.4,
        "z3": 0.4,
        "z4": 0.2,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-5min-step.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-5min-step.zwo"
    },
    {
      "slug": "ftp-progression-z2-z4-z2-5min-step-peak-10min",
      "name": "FTP Progression Z2→Z4→Z2 (5min/step, peak 10min)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2640,
      "intensity_summary": "10min @ 100% FTP",
      "tss": 47.4,
      "intensity_factor": 0.804,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.333,
        "z3": 0.333,
        "z4": 0.333,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-5min-step-peak-10min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-5min-step-peak-10min.zwo"
    },
    {
      "slug": "ftp-progression-z2-z4-z2-8min-step",
      "name": "FTP Progression Z2→Z4→Z2 (8min/step)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3240,
      "intensity_summary": "8min @ 100% FTP",
      "tss": 55.5,
      "intensity_factor": 0.785,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.4,
        "z3": 0.4,
        "z4": 0.2,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-8min-step.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/ftp-progression-z2-z4-z2-8min-step.zwo"
    },
    {
      "slug": "hour-of-power-40min-sustained-at-105pct-ftp",
      "name": "Hour of Power (40min sustained @ 105% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3600,
      "intensity_summary": "40min @ 105% FTP",
      "tss": 93.2,
      "intensity_factor": 0.965,
      "difficulty_score": {
        "overall": 8,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/hour-of-power-40min-sustained-at-105pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/hour-of-power-40min-sustained-at-105pct-ftp.zwo"
    },
    {
      "slug": "hour-of-power-60min-sustained-at-100pct-ftp",
      "name": "Hour of Power (60min sustained @ 100% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4800,
      "intensity_summary": "60min @ 100% FTP",
      "tss": 118.7,
      "intensity_factor": 0.944,
      "difficulty_score": {
        "overall": 8,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/hour-of-power-60min-sustained-at-100pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 3600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/hour-of-power-60min-sustained-at-100pct-ftp.zwo"
    },
    {
      "slug": "hour-of-power-75min-sustained-at-95pct-ftp",
      "name": "Hour of Power (75min sustained @ 95% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5700,
      "intensity_summary": "75min @ 95% FTP",
      "tss": 130.5,
      "intensity_factor": 0.908,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/hour-of-power-75min-sustained-at-95pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 4500,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/hour-of-power-75min-sustained-at-95pct-ftp.zwo"
    },
    {
      "slug": "lactate-shuttle-10x-1min-at-100pct-1min-at-77pct-ftp",
      "name": "Lactate Shuttle 10× (1min @ 100% / 1min @ 77% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2100,
      "intensity_summary": "10×1min @ 100% FTP",
      "tss": 38.3,
      "intensity_factor": 0.811,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/lactate-shuttle-10x-1min-at-100pct-1min-at-77pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/lactate-shuttle-10x-1min-at-100pct-1min-at-77pct-ftp.zwo"
    },
    {
      "slug": "lactate-shuttle-15x-1min-at-100pct-1min-at-77pct-ftp",
      "name": "Lactate Shuttle 15× (1min @ 100% / 1min @ 77% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "15×1min @ 100% FTP",
      "tss": 52.1,
      "intensity_factor": 0.833,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/lactate-shuttle-15x-1min-at-100pct-1min-at-77pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/lactate-shuttle-15x-1min-at-100pct-1min-at-77pct-ftp.zwo"
    },
    {
      "slug": "lactate-shuttle-15x-1min-at-95pct-1min-at-77pct-ftp",
      "name": "Lactate Shuttle 15× (1min @ 95% / 1min @ 77% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "15×1min @ 95% FTP",
      "tss": 48.9,
      "intensity_factor": 0.808,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/lactate-shuttle-15x-1min-at-95pct-1min-at-77pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/lactate-shuttle-15x-1min-at-95pct-1min-at-77pct-ftp.zwo"
    },
    {
      "slug": "lactate-shuttle-20x-1min-at-100pct-1min-at-77pct-ftp",
      "name": "Lactate Shuttle 20× (1min @ 100% / 1min @ 77% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3300,
      "intensity_summary": "20×1min @ 100% FTP",
      "tss": 65.7,
      "intensity_factor": 0.847,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/lactate-shuttle-20x-1min-at-100pct-1min-at-77pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/lactate-shuttle-20x-1min-at-100pct-1min-at-77pct-ftp.zwo"
    },
    {
      "slug": "lactate-shuttle-25x-1min-at-100pct-1min-at-77pct-ftp",
      "name": "Lactate Shuttle 25× (1min @ 100% / 1min @ 77% FTP)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "25×1min @ 100% FTP",
      "tss": 79.3,
      "intensity_factor": 0.856,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/lactate-shuttle-25x-1min-at-100pct-1min-at-77pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 77
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/lactate-shuttle-25x-1min-at-100pct-1min-at-77pct-ftp.zwo"
    },
    {
      "slug": "mountain-repeats-3x-5min-at-95pct-climb-5min-z1-descent",
      "name": "Mountain Repeats (3× 5min @ 95% climb + 5min Z1 descent)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2700,
      "intensity_summary": "3×5min @ 95% FTP",
      "tss": 43.1,
      "intensity_factor": 0.758,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "climb-specific"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/mountain-repeats-3x-5min-at-95pct-climb-5min-z1-descent.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/mountain-repeats-3x-5min-at-95pct-climb-5min-z1-descent.zwo"
    },
    {
      "slug": "mountain-repeats-4x-8min-at-95pct-climb-5min-z1-descent",
      "name": "Mountain Repeats (4× 8min @ 95% climb + 5min Z1 descent)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4020,
      "intensity_summary": "4×8min @ 95% FTP",
      "tss": 73.4,
      "intensity_factor": 0.811,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.615,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "climb-specific"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/mountain-repeats-4x-8min-at-95pct-climb-5min-z1-descent.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/mountain-repeats-4x-8min-at-95pct-climb-5min-z1-descent.zwo"
    },
    {
      "slug": "mountain-repeats-5x-10min-at-95pct-climb-6min-z1-descent",
      "name": "Mountain Repeats (5× 10min @ 95% climb + 6min Z1 descent)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5700,
      "intensity_summary": "5×10min @ 95% FTP",
      "tss": 107.9,
      "intensity_factor": 0.826,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.375,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.625,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "climb-specific"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/mountain-repeats-5x-10min-at-95pct-climb-6min-z1-descent.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/mountain-repeats-5x-10min-at-95pct-climb-6min-z1-descent.zwo"
    },
    {
      "slug": "primed-ftp-2x-30s-at-120pct-12min-at-100pct",
      "name": "Primed FTP 2× (30s @ 120% → 12min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2880,
      "intensity_summary": "2×30s @ 120% FTP",
      "tss": 61.3,
      "intensity_factor": 0.876,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.242,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.727,
        "z5": 0.03
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-2x-30s-at-120pct-12min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-2x-30s-at-120pct-12min-at-100pct.zwo"
    },
    {
      "slug": "primed-ftp-3x-30s-at-120pct-5min-at-100pct",
      "name": "Primed FTP 3× (30s @ 120% → 5min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2610,
      "intensity_summary": "3×30s @ 120% FTP",
      "tss": 49.4,
      "intensity_factor": 0.825,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.421,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.526,
        "z5": 0.053
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-3x-30s-at-120pct-5min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-3x-30s-at-120pct-5min-at-100pct.zwo"
    },
    {
      "slug": "primed-ftp-3x-30s-at-120pct-8min-at-100pct",
      "name": "Primed FTP 3× (30s @ 120% → 8min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3150,
      "intensity_summary": "3×30s @ 120% FTP",
      "tss": 65.3,
      "intensity_factor": 0.864,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.32,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.64,
        "z5": 0.04
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-3x-30s-at-120pct-8min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-3x-30s-at-120pct-8min-at-100pct.zwo"
    },
    {
      "slug": "primed-ftp-4x-30s-at-120pct-5min-at-100pct",
      "name": "Primed FTP 4× (30s @ 120% → 5min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3180,
      "intensity_summary": "4×30s @ 120% FTP",
      "tss": 62.1,
      "intensity_factor": 0.838,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.421,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.526,
        "z5": 0.053
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-4x-30s-at-120pct-5min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-4x-30s-at-120pct-5min-at-100pct.zwo"
    },
    {
      "slug": "primed-ftp-4x-30s-at-120pct-8min-at-100pct",
      "name": "Primed FTP 4× (30s @ 120% → 8min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "4×30s @ 120% FTP",
      "tss": 83.1,
      "intensity_factor": 0.876,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.32,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.64,
        "z5": 0.04
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-4x-30s-at-120pct-8min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-4x-30s-at-120pct-8min-at-100pct.zwo"
    },
    {
      "slug": "primed-ftp-5x-30s-at-120pct-5min-at-100pct",
      "name": "Primed FTP 5× (30s @ 120% → 5min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3750,
      "intensity_summary": "5×30s @ 120% FTP",
      "tss": 74.8,
      "intensity_factor": 0.847,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.421,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.526,
        "z5": 0.053
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/primed-ftp-5x-30s-at-120pct-5min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/primed-ftp-5x-30s-at-120pct-5min-at-100pct.zwo"
    },
    {
      "slug": "reverse-pyramid-intervals-4-3-2-1-min-at-100pct",
      "name": "Reverse Pyramid Intervals (4-3-2-1 min @ 100%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 1830,
      "intensity_summary": "4×4min @ 100% FTP",
      "tss": 31.7,
      "intensity_factor": 0.789,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.355,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.645,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/reverse-pyramid-intervals-4-3-2-1-min-at-100pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/reverse-pyramid-intervals-4-3-2-1-min-at-100pct.zwo"
    },
    {
      "slug": "speed-play-20x-1min-at-100pct-1min-at-55pct",
      "name": "Speed Play 20×(1min @ 100% / 1min @ 55%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3300,
      "intensity_summary": "20×1min @ 100% FTP",
      "tss": 57.2,
      "intensity_factor": 0.79,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/speed-play-20x-1min-at-100pct-1min-at-55pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/speed-play-20x-1min-at-100pct-1min-at-55pct.zwo"
    },
    {
      "slug": "speed-play-25x-1min-at-100pct-1min-at-55pct",
      "name": "Speed Play 25×(1min @ 100% / 1min @ 55%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3900,
      "intensity_summary": "25×1min @ 100% FTP",
      "tss": 68.9,
      "intensity_factor": 0.797,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/speed-play-25x-1min-at-100pct-1min-at-55pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/speed-play-25x-1min-at-100pct-1min-at-55pct.zwo"
    },
    {
      "slug": "speed-play-30x-1min-at-100pct-1min-at-55pct",
      "name": "Speed Play 30×(1min @ 100% / 1min @ 55%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 4500,
      "intensity_summary": "30×1min @ 100% FTP",
      "tss": 80.5,
      "intensity_factor": 0.803,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/speed-play-30x-1min-at-100pct-1min-at-55pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/speed-play-30x-1min-at-100pct-1min-at-55pct.zwo"
    },
    {
      "slug": "speed-play-35x-1min-at-100pct-1min-at-55pct",
      "name": "Speed Play 35×(1min @ 100% / 1min @ 55%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 5100,
      "intensity_summary": "35×1min @ 100% FTP",
      "tss": 92.1,
      "intensity_factor": 0.806,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/speed-play-35x-1min-at-100pct-1min-at-55pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/speed-play-35x-1min-at-100pct-1min-at-55pct.zwo"
    },
    {
      "slug": "threshold-3-level-ou-3x3-u-95-o1-105-o2-115",
      "name": "Threshold 3-Level OU 3×3 (U 95/O1 105/O2 115)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3270,
      "intensity_summary": "9×30s @ 115% FTP",
      "tss": 63.8,
      "intensity_factor": 0.838,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.48,
        "z5": 0.12
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-3-level-ou-3x3-u-95-o1-105-o2-115.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-3-level-ou-3x3-u-95-o1-105-o2-115.zwo"
    },
    {
      "slug": "threshold-ascending-ladder-2x-6min-at-92pct-4min-at-100pct-2min-at-110pct",
      "name": "Threshold Ascending Ladder 2× (6min @ 92% → 4min @ 100% → 2min @ 110%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2820,
      "intensity_summary": "2×2min @ 110% FTP",
      "tss": 56.8,
      "intensity_factor": 0.852,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.375,
        "z4": 0.25,
        "z5": 0.125
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "progressive-effort"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-ascending-ladder-2x-6min-at-92pct-4min-at-100pct-2min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-ascending-ladder-2x-6min-at-92pct-4min-at-100pct-2min-at-110pct.zwo"
    },
    {
      "slug": "threshold-ascending-ladder-3x-6min-at-92pct-4min-at-100pct-2min-at-110pct",
      "name": "Threshold Ascending Ladder 3× (6min @ 92% → 4min @ 100% → 2min @ 110%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3780,
      "intensity_summary": "3×2min @ 110% FTP",
      "tss": 79.4,
      "intensity_factor": 0.87,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.375,
        "z4": 0.25,
        "z5": 0.125
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "progressive-effort"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-ascending-ladder-3x-6min-at-92pct-4min-at-100pct-2min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-ascending-ladder-3x-6min-at-92pct-4min-at-100pct-2min-at-110pct.zwo"
    },
    {
      "slug": "threshold-descending-ladder-2x-2min-at-110pct-4min-at-100pct-6min-at-92pct",
      "name": "Threshold Descending Ladder 2× (2min @ 110% → 4min @ 100% → 6min @ 92%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2820,
      "intensity_summary": "2×2min @ 110% FTP",
      "tss": 56.9,
      "intensity_factor": 0.852,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.375,
        "z4": 0.25,
        "z5": 0.125
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-descending-ladder-2x-2min-at-110pct-4min-at-100pct-6min-at-92pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-descending-ladder-2x-2min-at-110pct-4min-at-100pct-6min-at-92pct.zwo"
    },
    {
      "slug": "threshold-descending-ladder-3x-2min-at-110pct-4min-at-100pct-6min-at-92pct",
      "name": "Threshold Descending Ladder 3× (2min @ 110% → 4min @ 100% → 6min @ 92%)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3780,
      "intensity_summary": "3×2min @ 110% FTP",
      "tss": 79.5,
      "intensity_factor": 0.87,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.375,
        "z4": 0.25,
        "z5": 0.125
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-descending-ladder-3x-2min-at-110pct-4min-at-100pct-6min-at-92pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-descending-ladder-3x-2min-at-110pct-4min-at-100pct-6min-at-92pct.zwo"
    },
    {
      "slug": "threshold-over-unders-2x4-underat95-overat110",
      "name": "Threshold Over-Unders 2×4 (Under@95/Over@110)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 2580,
      "intensity_summary": "8×30s @ 110% FTP",
      "tss": 46.6,
      "intensity_factor": 0.806,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.462,
        "z5": 0.154
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-over-unders-2x4-underat95-overat110.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-over-unders-2x4-underat95-overat110.zwo"
    },
    {
      "slug": "threshold-over-unders-3x3-underat95-overat110",
      "name": "Threshold Over-Unders 3×3 (Under@95/Over@110)",
      "set": "power",
      "category": "ftp-intervals",
      "duration_seconds": 3540,
      "intensity_summary": "9×1min @ 110% FTP",
      "tss": 70.7,
      "intensity_factor": 0.848,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.357,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.429,
        "z5": 0.214
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/threshold-over-unders-3x3-underat95-overat110.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/threshold-over-unders-3x3-underat95-overat110.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z4-10min-steps",
      "name": "Power Zone Progression (Z1→Z4, 10min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 3000,
      "intensity_summary": "10min @ 95% FTP",
      "tss": 45.8,
      "intensity_factor": 0.742,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.25,
        "z2": 0.25,
        "z3": 0.25,
        "z4": 0.25,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z4-10min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z4-10min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z4-3min-steps",
      "name": "Power Zone Progression (Z1→Z4, 3min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 1140,
      "intensity_summary": "3min @ 95% FTP",
      "tss": 15.8,
      "intensity_factor": 0.706,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.25,
        "z2": 0.25,
        "z3": 0.25,
        "z4": 0.25,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z4-3min-steps.ytw",
      "sparkline": [
        {
          "d": 240,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z4-3min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z4-x2-double-climb-4min-steps",
      "name": "Power Zone Progression (Z1→Z4 ×2 double-climb, 4min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 2400,
      "intensity_summary": "2×4min @ 95% FTP",
      "tss": 36.6,
      "intensity_factor": 0.741,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.25,
        "z2": 0.25,
        "z3": 0.25,
        "z4": 0.25,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z4-x2-double-climb-4min-steps.ytw",
      "sparkline": [
        {
          "d": 240,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z4-x2-double-climb-4min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z5-3min-steps",
      "name": "Power Zone Progression (Z1→Z5, 3min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 1380,
      "intensity_summary": "3min @ 110% FTP",
      "tss": 24.2,
      "intensity_factor": 0.794,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.2,
        "z2": 0.2,
        "z3": 0.2,
        "z4": 0.2,
        "z5": 0.2
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "vo2max"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z5-3min-steps.ytw",
      "sparkline": [
        {
          "d": 240,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z5-3min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z5-5min-steps",
      "name": "Power Zone Progression (Z1→Z5, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 3240,
      "intensity_summary": "5min @ 110% FTP",
      "tss": 58.1,
      "intensity_factor": 0.803,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.222,
        "z2": 0.222,
        "z3": 0.222,
        "z4": 0.222,
        "z5": 0.111
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z5-5min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z5-5min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z1-z6-full-sweep-5min-steps",
      "name": "Power Zone Progression (Z1→Z6 full sweep, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 2400,
      "intensity_summary": "2min @ 135% FTP",
      "tss": 49.1,
      "intensity_factor": 0.858,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.185,
        "z2": 0.185,
        "z3": 0.185,
        "z4": 0.185,
        "z5": 0.259
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z1-z6-full-sweep-5min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 480,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z1-z6-full-sweep-5min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z2-z4-sawtooth-x3-5min-steps",
      "name": "Power Zone Progression (Z2↔Z4 sawtooth ×3, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 3540,
      "intensity_summary": "3×5min @ 95% FTP",
      "tss": 60.9,
      "intensity_factor": 0.787,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.4,
        "z3": 0.3,
        "z4": 0.3,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z2-z4-sawtooth-x3-5min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z2-z4-sawtooth-x3-5min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z2-z5-5min-steps",
      "name": "Power Zone Progression (Z2→Z5, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 2640,
      "intensity_summary": "5min @ 110% FTP",
      "tss": 52.0,
      "intensity_factor": 0.842,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.286,
        "z3": 0.286,
        "z4": 0.286,
        "z5": 0.143
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z2-z5-5min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z2-z5-5min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z2-z5-z2-pyramid-5min-steps",
      "name": "Power Zone Progression (Z2→Z5→Z2 pyramid, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 2640,
      "intensity_summary": "5min @ 110% FTP",
      "tss": 52.0,
      "intensity_factor": 0.842,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.286,
        "z3": 0.286,
        "z4": 0.286,
        "z5": 0.143
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "aerobic-versatility",
        "vo2max"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z2-z5-z2-pyramid-5min-steps.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z2-z5-z2-pyramid-5min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z3-z5-continuous-ramp-10min-steps",
      "name": "Power Zone Progression (Z3→Z5 continuous ramp, 10min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 1380,
      "intensity_summary": "10min @ 80% FTP",
      "tss": 25.3,
      "intensity_factor": 0.812,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "vo2max",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z3-z5-continuous-ramp-10min-steps.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 80,
          "e": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z3-z5-continuous-ramp-10min-steps.zwo"
    },
    {
      "slug": "power-zone-progression-z4-z1-5min-steps",
      "name": "Power Zone Progression (Z4→Z1, 5min steps)",
      "set": "power",
      "category": "progressions",
      "duration_seconds": 2040,
      "intensity_summary": "5min @ 95% FTP",
      "tss": 30.6,
      "intensity_factor": 0.735,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.25,
        "z2": 0.25,
        "z3": 0.25,
        "z4": 0.25,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fat-oxidation",
        "cardiovascular-base",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/progressions/power-zone-progression-z4-z1-5min-steps.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 85,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 45,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/progressions/power-zone-progression-z4-z1-5min-steps.zwo"
    },
    {
      "slug": "brick-prep-60min-40min-z2-20min-at-85pct-race-pace-finish",
      "name": "Brick Prep (60min: 40min Z2 + 20min @ 85% race-pace finish)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 3900,
      "intensity_summary": "20min @ 85% FTP",
      "tss": 55.6,
      "intensity_factor": 0.716,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.667,
        "z3": 0.333,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "tri",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/brick-prep-60min-40min-z2-20min-at-85pct-race-pace-finish.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 45,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z2",
          "p": 63
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55,
          "e": 45,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/brick-prep-60min-40min-z2-20min-at-85pct-race-pace-finish.zwo"
    },
    {
      "slug": "brick-prep-90min-70min-z2-20min-at-88pct-race-pace-finish",
      "name": "Brick Prep (90min: 70min Z2 + 20min @ 88% race-pace finish)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 5700,
      "intensity_summary": "20min @ 88% FTP",
      "tss": 78.6,
      "intensity_factor": 0.704,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.778,
        "z3": 0.222,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "tri",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/brick-prep-90min-70min-z2-20min-at-88pct-race-pace-finish.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 45,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 4200,
          "z": "Z2",
          "p": 63
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55,
          "e": 45,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/brick-prep-90min-70min-z2-20min-at-88pct-race-pace-finish.zwo"
    },
    {
      "slug": "crit-lead-out-simulation-3-reps",
      "name": "Crit Lead-Out Simulation (3 reps)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2460,
      "intensity_summary": "3×10s @ 200% FTP",
      "tss": 37.1,
      "intensity_factor": 0.737,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.577,
        "z2": 0.346,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/crit-lead-out-simulation-3-reps.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/crit-lead-out-simulation-3-reps.zwo"
    },
    {
      "slug": "criterium-sim-10-attacks-on-z2-base-45-min",
      "name": "Criterium Sim — 10 attacks on Z2 base (45 min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 3250,
      "intensity_summary": "10×25s @ 130% FTP",
      "tss": 48.8,
      "intensity_factor": 0.736,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.899,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.101
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/criterium-sim-10-attacks-on-z2-base-45-min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 210,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 210,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/criterium-sim-10-attacks-on-z2-base-45-min.zwo"
    },
    {
      "slug": "criterium-sim-12-attacks-on-z2-base-60-min",
      "name": "Criterium Sim — 12 attacks on Z2 base (60 min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 4335,
      "intensity_summary": "12×30s @ 145% FTP",
      "tss": 76.0,
      "intensity_factor": 0.795,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.899,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.101
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/criterium-sim-12-attacks-on-z2-base-60-min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 270,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 210,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 270,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 210,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 270,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 210,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 270,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 145
        },
        {
          "d": 285,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/criterium-sim-12-attacks-on-z2-base-60-min.zwo"
    },
    {
      "slug": "criterium-sim-6-attacks-on-z2-base-30-min",
      "name": "Criterium Sim — 6 attacks on Z2 base (30 min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2520,
      "intensity_summary": "6×25s @ 130% FTP",
      "tss": 35.5,
      "intensity_factor": 0.713,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.914,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.086
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/criterium-sim-6-attacks-on-z2-base-30-min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 270,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/criterium-sim-6-attacks-on-z2-base-30-min.zwo"
    },
    {
      "slug": "gravel-fartlek-120min-10-terrain-surges-at-82pct-on-z2-base",
      "name": "Gravel Fartlek (120min, 10 terrain surges @ 82% on Z2 base)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 6810,
      "intensity_summary": "10×1min @ 82% FTP",
      "tss": 86.4,
      "intensity_factor": 0.676,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.826,
        "z3": 0.174,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "gravel",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/gravel-fartlek-120min-10-terrain-surges-at-82pct-on-z2-base.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 420,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 420,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/gravel-fartlek-120min-10-terrain-surges-at-82pct-on-z2-base.zwo"
    },
    {
      "slug": "gravel-fartlek-180min-12-terrain-surges-at-82pct-on-z2-base",
      "name": "Gravel Fartlek (180min, 12 terrain surges @ 82% on Z2 base)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 9570,
      "intensity_summary": "12×1min30s @ 82% FTP",
      "tss": 125.7,
      "intensity_factor": 0.688,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.785,
        "z3": 0.215,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "gravel",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/gravel-fartlek-180min-12-terrain-surges-at-82pct-on-z2-base.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 540,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/gravel-fartlek-180min-12-terrain-surges-at-82pct-on-z2-base.zwo"
    },
    {
      "slug": "gravel-fartlek-90min-8-terrain-surges-at-82pct-on-z2-base",
      "name": "Gravel Fartlek (90min, 8 terrain surges @ 82% on Z2 base)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 5220,
      "intensity_summary": "8×1min @ 82% FTP",
      "tss": 64.9,
      "intensity_factor": 0.669,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.0,
        "z2": 0.838,
        "z3": 0.162,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "gravel",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/gravel-fartlek-90min-8-terrain-surges-at-82pct-on-z2-base.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 420,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 420,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 480,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/gravel-fartlek-90min-8-terrain-surges-at-82pct-on-z2-base.zwo"
    },
    {
      "slug": "group-ride-simulation-60min-7-surges",
      "name": "Group Ride Simulation (60min, 7 surges)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 4080,
      "intensity_summary": "2×30s @ 105% FTP",
      "tss": 59.7,
      "intensity_factor": 0.726,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.855,
        "z3": 0.0,
        "z4": 0.145,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/group-ride-simulation-60min-7-surges.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 68
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 420,
          "z": "Z2",
          "p": 68
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 98
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 360,
          "z": "Z2",
          "p": 68
        },
        {
          "d": 45,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 75,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/group-ride-simulation-60min-7-surges.zwo"
    },
    {
      "slug": "hard-start-threshold-2x12min-30s-at-130pct-main-30s-at-140pct-attack",
      "name": "Hard-Start Threshold 2×12min (30s @ 130% → main → 30s @ 140% attack)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2940,
      "intensity_summary": "2×30s @ 140% FTP",
      "tss": 63.8,
      "intensity_factor": 0.884,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.294,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.647,
        "z5": 0.059
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/hard-start-threshold-2x12min-30s-at-130pct-main-30s-at-140pct-attack.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 660,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 660,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/hard-start-threshold-2x12min-30s-at-130pct-main-30s-at-140pct-attack.zwo"
    },
    {
      "slug": "hard-start-threshold-3x10min-30s-at-130pct-main-30s-at-140pct-attack",
      "name": "Hard-Start Threshold 3×10min (30s @ 130% → main → 30s @ 140% attack)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 3600,
      "intensity_summary": "3×30s @ 140% FTP",
      "tss": 79.3,
      "intensity_factor": 0.891,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.6,
        "z5": 0.067
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/hard-start-threshold-3x10min-30s-at-130pct-main-30s-at-140pct-attack.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 540,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 540,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 540,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/hard-start-threshold-3x10min-30s-at-130pct-main-30s-at-140pct-attack.zwo"
    },
    {
      "slug": "hard-start-threshold-3x8min-30s-at-130pct-main-30s-at-140pct-attack",
      "name": "Hard-Start Threshold 3×8min (30s @ 130% → main → 30s @ 140% attack)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 3240,
      "intensity_summary": "3×30s @ 140% FTP",
      "tss": 69.0,
      "intensity_factor": 0.876,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.538,
        "z5": 0.077
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/hard-start-threshold-3x8min-30s-at-130pct-main-30s-at-140pct-attack.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/hard-start-threshold-3x8min-30s-at-130pct-main-30s-at-140pct-attack.zwo"
    },
    {
      "slug": "long-fartlek-90min-rider-driven",
      "name": "Long Fartlek (90min, rider-driven)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 4845,
      "intensity_summary": "30s @ 130% FTP",
      "tss": 66.8,
      "intensity_factor": 0.704,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.915,
        "z3": 0.0,
        "z4": 0.066,
        "z5": 0.018
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing",
        "race-pacing",
        "mental-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/long-fartlek-90min-rider-driven.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/long-fartlek-90min-rider-driven.zwo"
    },
    {
      "slug": "negative-split-tempo-30min-75-90pct",
      "name": "Negative Split Tempo (30min, 75/90%)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2580,
      "intensity_summary": "15min @ 90% FTP",
      "tss": 43.5,
      "intensity_factor": 0.779,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.5,
        "z3": 0.5,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "race-pacing",
        "mental-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/negative-split-tempo-30min-75-90pct.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/negative-split-tempo-30min-75-90pct.zwo"
    },
    {
      "slug": "pre-test-calibration-ride-35min",
      "name": "Pre-Test Calibration Ride (35min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2040,
      "intensity_summary": "1min @ 110% FTP",
      "tss": 25.6,
      "intensity_factor": 0.672,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.345,
        "z2": 0.517,
        "z3": 0.0,
        "z4": 0.103,
        "z5": 0.034
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-activation",
        "race-preparation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/pre-test-calibration-ride-35min.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 45,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 62
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/pre-test-calibration-ride-35min.zwo"
    },
    {
      "slug": "race-day-activation-25min",
      "name": "Race-Day Activation (25min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 1710,
      "intensity_summary": "3×10s @ 160% FTP",
      "tss": 20.6,
      "intensity_factor": 0.658,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.106,
        "z2": 0.851,
        "z3": 0.0,
        "z4": 0.021,
        "z5": 0.021
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-activation",
        "race-preparation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/race-day-activation-25min.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/race-day-activation-25min.zwo"
    },
    {
      "slug": "race-day-opener-day-before-primer-30min",
      "name": "Race-Day Opener (day-before primer, 30min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2010,
      "intensity_summary": "3×30s @ 160% FTP",
      "tss": 32.6,
      "intensity_factor": 0.765,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.316,
        "z2": 0.526,
        "z3": 0.0,
        "z4": 0.105,
        "z5": 0.053
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-activation",
        "race-preparation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/race-day-opener-day-before-primer-30min.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/race-day-opener-day-before-primer-30min.zwo"
    },
    {
      "slug": "race-day-opener-day-before-primer-45min",
      "name": "Race-Day Opener (day-before primer, 45min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2610,
      "intensity_summary": "3×30s @ 160% FTP",
      "tss": 39.2,
      "intensity_factor": 0.735,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.234,
        "z2": 0.649,
        "z3": 0.0,
        "z4": 0.078,
        "z5": 0.039
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-activation",
        "race-preparation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/race-day-opener-day-before-primer-45min.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 160
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/race-day-opener-day-before-primer-45min.zwo"
    },
    {
      "slug": "race-week-opener-45min",
      "name": "Race-Week Opener (45min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2520,
      "intensity_summary": "3×30s @ 120% FTP",
      "tss": 36.3,
      "intensity_factor": 0.72,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.234,
        "z2": 0.625,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.141
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "neuromuscular-activation",
        "race-preparation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/race-week-opener-45min.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 45,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/race-week-opener-45min.zwo"
    },
    {
      "slug": "random-attacks-14-surges-on-z2-base-60-min",
      "name": "Random Attacks (14 surges on Z2 base, 60 min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 4139,
      "intensity_summary": "14×25s @ 135% FTP",
      "tss": 66.1,
      "intensity_factor": 0.758,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.896,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.104
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/random-attacks-14-surges-on-z2-base-60-min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 191,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 267,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 113,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 348,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 142,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 89,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 276,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 167,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 233,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 119,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 298,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 145,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 87,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 312,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 222,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/random-attacks-14-surges-on-z2-base-60-min.zwo"
    },
    {
      "slug": "random-attacks-7-surges-on-z2-base-30-min",
      "name": "Random Attacks (7 surges on Z2 base, 30 min)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2325,
      "intensity_summary": "7×25s @ 135% FTP",
      "tss": 35.5,
      "intensity_factor": 0.741,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.887,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.113
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/random-attacks-7-surges-on-z2-base-30-min.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 127,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 218,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 89,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 305,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 156,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 73,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 234,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 25,
          "z": "Z5",
          "p": 135
        },
        {
          "d": 168,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/random-attacks-7-surges-on-z2-base-30-min.zwo"
    },
    {
      "slug": "track-kilo-tt-70s-all-out-at-150pct-ftp",
      "name": "Track Kilo TT (~70s all-out @ 150% FTP)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 1570,
      "intensity_summary": "1min10s @ 150% FTP",
      "tss": 24.7,
      "intensity_factor": 0.752,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 1.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "race-pacing",
        "mental-discipline",
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/track-kilo-tt-70s-all-out-at-150pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 70,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/track-kilo-tt-70s-all-out-at-150pct-ftp.zwo"
    },
    {
      "slug": "track-pursuit-16km-22min-max-able-pace",
      "name": "Track Pursuit 16km (~22min max-able pace)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2820,
      "intensity_summary": "22min @ 108% FTP",
      "tss": 66.0,
      "intensity_factor": 0.918,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 1.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "race-pacing",
        "mental-discipline",
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/track-pursuit-16km-22min-max-able-pace.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 1320,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/track-pursuit-16km-22min-max-able-pace.zwo"
    },
    {
      "slug": "track-pursuit-4km-5min-max-able-pace",
      "name": "Track Pursuit 4km (~5min max-able pace)",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 1800,
      "intensity_summary": "5min @ 120% FTP",
      "tss": 33.6,
      "intensity_factor": 0.819,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 1.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "race-pacing",
        "mental-discipline",
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/track-pursuit-4km-5min-max-able-pace.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/track-pursuit-4km-5min-max-able-pace.zwo"
    },
    {
      "slug": "tt-pacing-20min-sustained-at-95pct-ftp",
      "name": "TT Pacing — 20min sustained @ 95% FTP",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2100,
      "intensity_summary": "5min @ 97% FTP",
      "tss": 42.6,
      "intensity_factor": 0.855,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/tt-pacing-20min-sustained-at-95pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 93
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 97
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/tt-pacing-20min-sustained-at-95pct-ftp.zwo"
    },
    {
      "slug": "tt-pacing-30min-sustained-at-95pct-ftp",
      "name": "TT Pacing — 30min sustained @ 95% FTP",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 2700,
      "intensity_summary": "7min30s @ 97% FTP",
      "tss": 57.9,
      "intensity_factor": 0.879,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/tt-pacing-30min-sustained-at-95pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 450,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 450,
          "z": "Z4",
          "p": 93
        },
        {
          "d": 450,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 450,
          "z": "Z4",
          "p": 97
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/tt-pacing-30min-sustained-at-95pct-ftp.zwo"
    },
    {
      "slug": "tt-pacing-60min-sustained-at-90pct-ftp",
      "name": "TT Pacing — 60min sustained @ 90% FTP",
      "set": "power",
      "category": "race-sim",
      "duration_seconds": 4500,
      "intensity_summary": "15min @ 92% FTP",
      "tss": 93.3,
      "intensity_factor": 0.864,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 1.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "fractional-utilization",
        "lactate-tolerance",
        "anaerobic-capacity",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/race-sim/tt-pacing-60min-sustained-at-90pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 90
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 88
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 90
        },
        {
          "d": 900,
          "z": "Z4",
          "p": 92
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/race-sim/tt-pacing-60min-sustained-at-90pct-ftp.zwo"
    },
    {
      "slug": "active-recovery-openers-45min-4x-10s-neuro-openers",
      "name": "Active Recovery + Openers (45min, 4× 10s neuro openers)",
      "set": "power",
      "category": "recovery",
      "duration_seconds": 3000,
      "intensity_summary": "4×10s @ 130% FTP",
      "tss": 21.9,
      "intensity_factor": 0.513,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.985,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.015
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "neuromuscular-maintenance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/recovery/active-recovery-openers-45min-4x-10s-neuro-openers.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 620,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 620,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 620,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/recovery/active-recovery-openers-45min-4x-10s-neuro-openers.zwo"
    },
    {
      "slug": "active-recovery-openers-60min-5x-10s-neuro-openers",
      "name": "Active Recovery + Openers (60min, 5× 10s neuro openers)",
      "set": "power",
      "category": "recovery",
      "duration_seconds": 3900,
      "intensity_summary": "5×10s @ 130% FTP",
      "tss": 28.5,
      "intensity_factor": 0.513,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.986,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.014
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "neuromuscular-maintenance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/recovery/active-recovery-openers-60min-5x-10s-neuro-openers.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 675,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 675,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 675,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 675,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 50,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/recovery/active-recovery-openers-60min-5x-10s-neuro-openers.zwo"
    },
    {
      "slug": "recovery-ride-30min-at-55pct-ftp",
      "name": "Recovery Ride (30min @ 55% FTP)",
      "set": "power",
      "category": "recovery",
      "duration_seconds": 2100,
      "intensity_summary": "30min @ 55% FTP",
      "tss": 17.0,
      "intensity_factor": 0.54,
      "difficulty_score": {
        "overall": 1,
        "z1": 1.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "fatigue-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/recovery/recovery-ride-30min-at-55pct-ftp.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/recovery/recovery-ride-30min-at-55pct-ftp.zwo"
    },
    {
      "slug": "recovery-ride-45min-at-55pct-ftp",
      "name": "Recovery Ride (45min @ 55% FTP)",
      "set": "power",
      "category": "recovery",
      "duration_seconds": 3000,
      "intensity_summary": "45min @ 55% FTP",
      "tss": 24.6,
      "intensity_factor": 0.543,
      "difficulty_score": {
        "overall": 1,
        "z1": 1.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "fatigue-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/recovery/recovery-ride-45min-at-55pct-ftp.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 2700,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/recovery/recovery-ride-45min-at-55pct-ftp.zwo"
    },
    {
      "slug": "recovery-ride-60min-at-55pct-ftp",
      "name": "Recovery Ride (60min @ 55% FTP)",
      "set": "power",
      "category": "recovery",
      "duration_seconds": 3900,
      "intensity_summary": "60min @ 55% FTP",
      "tss": 32.2,
      "intensity_factor": 0.545,
      "difficulty_score": {
        "overall": 2,
        "z1": 1.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "active-recovery",
        "fatigue-clearance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/recovery/recovery-ride-60min-at-55pct-ftp.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 40,
          "e": 50,
          "t": "WARMUP"
        },
        {
          "d": 3600,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/recovery/recovery-ride-60min-at-55pct-ftp.zwo"
    },
    {
      "slug": "cadence-pyramid-3x-80-110-80-rpm-at-70pct",
      "name": "Cadence Pyramid (3×, 80→110→80 RPM @ 70%)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2400,
      "intensity_summary": "21×1min @ 70% FTP",
      "tss": 27.0,
      "intensity_factor": 0.636,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.222,
        "z2": 0.778,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "muscular-coordination"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/cadence-pyramid-3x-80-110-80-rpm-at-70pct.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/cadence-pyramid-3x-80-110-80-rpm-at-70pct.zwo"
    },
    {
      "slug": "cadence-ramp-4x-4min-sweet-spot-80-110-rpm-stepped",
      "name": "Cadence Ramp 4× (4min sweet-spot, 80→110 RPM stepped)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2580,
      "intensity_summary": "16×1min @ 88% FTP",
      "tss": 37.5,
      "intensity_factor": 0.723,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.429,
        "z2": 0.0,
        "z3": 0.571,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "aerobic-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/cadence-ramp-4x-4min-sweet-spot-80-110-rpm-stepped.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "pyramid",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/cadence-ramp-4x-4min-sweet-spot-80-110-rpm-stepped.zwo"
    },
    {
      "slug": "cadence-ramp-5x-4min-sweet-spot-80-110-rpm-stepped",
      "name": "Cadence Ramp 5× (4min sweet-spot, 80→110 RPM stepped)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2700,
      "intensity_summary": "20×1min @ 88% FTP",
      "tss": 41.8,
      "intensity_factor": 0.747,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.667,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "aerobic-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/cadence-ramp-5x-4min-sweet-spot-80-110-rpm-stepped.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "pyramid",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/cadence-ramp-5x-4min-sweet-spot-80-110-rpm-stepped.zwo"
    },
    {
      "slug": "cadence-ramp-6x-4min-sweet-spot-80-110-rpm-stepped",
      "name": "Cadence Ramp 6× (4min sweet-spot, 80→110 RPM stepped)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 3060,
      "intensity_summary": "24×1min @ 88% FTP",
      "tss": 48.3,
      "intensity_factor": 0.754,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.667,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "aerobic-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/cadence-ramp-6x-4min-sweet-spot-80-110-rpm-stepped.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "pyramid",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/cadence-ramp-6x-4min-sweet-spot-80-110-rpm-stepped.zwo"
    },
    {
      "slug": "force-3x8min-at-85pct-60-rpm",
      "name": "Force 3×8min @ 85% / 60 RPM",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2880,
      "intensity_summary": "3×8min @ 85% FTP",
      "tss": 44.2,
      "intensity_factor": 0.743,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.727,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/force-3x8min-at-85pct-60-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/force-3x8min-at-85pct-60-rpm.zwo"
    },
    {
      "slug": "force-4x5min-at-90pct-55-rpm",
      "name": "Force 4×5min @ 90% / 55 RPM",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2820,
      "intensity_summary": "4×5min @ 90% FTP",
      "tss": 44.7,
      "intensity_factor": 0.755,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.375,
        "z2": 0.0,
        "z3": 0.625,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/force-4x5min-at-90pct-55-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/force-4x5min-at-90pct-55-rpm.zwo"
    },
    {
      "slug": "high-cadence-seated-attacks-5x30s-at-110pct-110-rpm",
      "name": "High-Cadence Seated Attacks (5×30s @ 110% / 110 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 1800,
      "intensity_summary": "5×30s @ 110% FTP",
      "tss": 20.3,
      "intensity_factor": 0.637,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/high-cadence-seated-attacks-5x30s-at-110pct-110-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/high-cadence-seated-attacks-5x30s-at-110pct-110-rpm.zwo"
    },
    {
      "slug": "high-cadence-seated-attacks-5x30s-at-110pct-115-rpm",
      "name": "High-Cadence Seated Attacks (5×30s @ 110% / 115 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 1800,
      "intensity_summary": "5×30s @ 110% FTP",
      "tss": 20.3,
      "intensity_factor": 0.637,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/high-cadence-seated-attacks-5x30s-at-110pct-115-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/high-cadence-seated-attacks-5x30s-at-110pct-115-rpm.zwo"
    },
    {
      "slug": "high-cadence-seated-attacks-8x30s-at-110pct-110-rpm",
      "name": "High-Cadence Seated Attacks (8×30s @ 110% / 110 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2340,
      "intensity_summary": "8×30s @ 110% FTP",
      "tss": 27.4,
      "intensity_factor": 0.649,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/high-cadence-seated-attacks-8x30s-at-110pct-110-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/high-cadence-seated-attacks-8x30s-at-110pct-110-rpm.zwo"
    },
    {
      "slug": "high-cadence-seated-attacks-8x30s-at-110pct-115-rpm",
      "name": "High-Cadence Seated Attacks (8×30s @ 110% / 115 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2340,
      "intensity_summary": "8×30s @ 110% FTP",
      "tss": 27.4,
      "intensity_factor": 0.649,
      "difficulty_score": {
        "overall": 3,
        "z1": 0.833,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/high-cadence-seated-attacks-8x30s-at-110pct-115-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/high-cadence-seated-attacks-8x30s-at-110pct-115-rpm.zwo"
    },
    {
      "slug": "overspeed-4x4min-at-70pct-110-rpm",
      "name": "Overspeed 4×4min @ 70% / 110 RPM",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2220,
      "intensity_summary": "4×4min @ 70% FTP",
      "tss": 23.7,
      "intensity_factor": 0.62,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.333,
        "z2": 0.667,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/overspeed-4x4min-at-70pct-110-rpm.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/overspeed-4x4min-at-70pct-110-rpm.zwo"
    },
    {
      "slug": "overspeed-5x3min-at-65pct-115-rpm",
      "name": "Overspeed 5×3min @ 65% / 115 RPM",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2280,
      "intensity_summary": "5×3min @ 65% FTP",
      "tss": 21.6,
      "intensity_factor": 0.584,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.4,
        "z2": 0.6,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/overspeed-5x3min-at-65pct-115-rpm.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/overspeed-5x3min-at-65pct-115-rpm.zwo"
    },
    {
      "slug": "single-leg-pedaling-drill-4x45s-per-leg",
      "name": "Single-Leg Pedaling Drill (4×45s per leg)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 1620,
      "intensity_summary": "8×1min @ 55% FTP",
      "tss": 12.0,
      "intensity_factor": 0.517,
      "difficulty_score": {
        "overall": 1,
        "z1": 0.429,
        "z2": 0.571,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "muscular-coordination"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/single-leg-pedaling-drill-4x45s-per-leg.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/single-leg-pedaling-drill-4x45s-per-leg.zwo"
    },
    {
      "slug": "spin-ups-3x4-80-110-rpm",
      "name": "Spin-Ups 3×4 (80→110 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 1860,
      "intensity_summary": "12×1min @ 70% FTP",
      "tss": 19.4,
      "intensity_factor": 0.613,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.333,
        "z2": 0.667,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/spin-ups-3x4-80-110-rpm.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/spin-ups-3x4-80-110-rpm.zwo"
    },
    {
      "slug": "spin-ups-3x5-80-120-rpm",
      "name": "Spin-Ups 3×5 (80→120 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 2040,
      "intensity_summary": "15×1min @ 70% FTP",
      "tss": 22.0,
      "intensity_factor": 0.622,
      "difficulty_score": {
        "overall": 2,
        "z1": 0.286,
        "z2": 0.714,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "pedalling-economy",
        "neuromuscular-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/spin-ups-3x5-80-120-rpm.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/spin-ups-3x5-80-120-rpm.zwo"
    },
    {
      "slug": "standing-climb-intervals-5x90s-at-95pct-65-rpm",
      "name": "Standing Climb Intervals (5×90s @ 95% / 65 RPM)",
      "set": "power",
      "category": "skill-drills",
      "duration_seconds": 1800,
      "intensity_summary": "5×1min30s @ 95% FTP",
      "tss": 25.9,
      "intensity_factor": 0.72,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.5,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "muscular-endurance",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/skill-drills/standing-climb-intervals-5x90s-at-95pct-65-rpm.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standing",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/skill-drills/standing-climb-intervals-5x90s-at-95pct-65-rpm.zwo"
    },
    {
      "slug": "cadence-alternation-20min-sweet-spot-80-100-rpm-every-60s",
      "name": "Cadence Alternation (20min sweet-spot, 80↔100 RPM every 60s)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2100,
      "intensity_summary": "20×1min @ 88% FTP",
      "tss": 36.6,
      "intensity_factor": 0.792,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "cadence-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/cadence-alternation-20min-sweet-spot-80-100-rpm-every-60s.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/cadence-alternation-20min-sweet-spot-80-100-rpm-every-60s.zwo"
    },
    {
      "slug": "cadence-alternation-30min-sweet-spot-75-110-rpm-every-60s",
      "name": "Cadence Alternation (30min sweet-spot, 75↔110 RPM every 60s)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2700,
      "intensity_summary": "30×1min @ 88% FTP",
      "tss": 49.7,
      "intensity_factor": 0.814,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "cadence-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/cadence-alternation-30min-sweet-spot-75-110-rpm-every-60s.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/cadence-alternation-30min-sweet-spot-75-110-rpm-every-60s.zwo"
    },
    {
      "slug": "cadence-alternation-30min-sweet-spot-80-100-rpm-every-60s",
      "name": "Cadence Alternation (30min sweet-spot, 80↔100 RPM every 60s)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2700,
      "intensity_summary": "30×1min @ 88% FTP",
      "tss": 49.7,
      "intensity_factor": 0.814,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "cadence-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/cadence-alternation-30min-sweet-spot-80-100-rpm-every-60s.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "mixed",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/cadence-alternation-30min-sweet-spot-80-100-rpm-every-60s.zwo"
    },
    {
      "slug": "spiked-tempo-3x15min-at-78pct-30s-at-150pct-accelerations",
      "name": "Spiked Tempo 3×15min @ 78% + 30s @ 150% accelerations",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4590,
      "intensity_summary": "3×30s @ 150% FTP",
      "tss": 71.8,
      "intensity_factor": 0.75,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.244,
        "z2": 0.0,
        "z3": 0.732,
        "z4": 0.0,
        "z5": 0.024
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/spiked-tempo-3x15min-at-78pct-30s-at-150pct-accelerations.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/spiked-tempo-3x15min-at-78pct-30s-at-150pct-accelerations.zwo"
    },
    {
      "slug": "spiked-tempo-4x10min-at-78pct-30s-at-150pct-accelerations",
      "name": "Spiked Tempo 4×10min @ 78% + 30s @ 150% accelerations",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4620,
      "intensity_summary": "4×30s @ 150% FTP",
      "tss": 72.2,
      "intensity_factor": 0.75,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.323,
        "z2": 0.0,
        "z3": 0.645,
        "z4": 0.0,
        "z5": 0.032
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/spiked-tempo-4x10min-at-78pct-30s-at-150pct-accelerations.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/spiked-tempo-4x10min-at-78pct-30s-at-150pct-accelerations.zwo"
    },
    {
      "slug": "spiked-tempo-4x15min-at-78pct-30s-at-150pct-accelerations",
      "name": "Spiked Tempo 4×15min @ 78% + 30s @ 150% accelerations",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 5820,
      "intensity_summary": "4×30s @ 150% FTP",
      "tss": 92.5,
      "intensity_factor": 0.757,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.244,
        "z2": 0.0,
        "z3": 0.732,
        "z4": 0.0,
        "z5": 0.024
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/spiked-tempo-4x15min-at-78pct-30s-at-150pct-accelerations.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/spiked-tempo-4x15min-at-78pct-30s-at-150pct-accelerations.zwo"
    },
    {
      "slug": "spiked-tempo-4x20min-at-78pct-30s-at-150pct-accelerations",
      "name": "Spiked Tempo 4×20min @ 78% + 30s @ 150% accelerations",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 7020,
      "intensity_summary": "4×30s @ 150% FTP",
      "tss": 112.8,
      "intensity_factor": 0.761,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.196,
        "z2": 0.0,
        "z3": 0.784,
        "z4": 0.0,
        "z5": 0.02
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/spiked-tempo-4x20min-at-78pct-30s-at-150pct-accelerations.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/spiked-tempo-4x20min-at-78pct-30s-at-150pct-accelerations.zwo"
    },
    {
      "slug": "spiked-tempo-5x15min-at-78pct-30s-at-150pct-accelerations",
      "name": "Spiked Tempo 5×15min @ 78% + 30s @ 150% accelerations",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 7050,
      "intensity_summary": "5×30s @ 150% FTP",
      "tss": 113.2,
      "intensity_factor": 0.76,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.244,
        "z2": 0.0,
        "z3": 0.732,
        "z4": 0.0,
        "z5": 0.024
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-threshold",
        "fractional-utilization",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/ftp-intervals/spiked-tempo-5x15min-at-78pct-30s-at-150pct-accelerations.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/ftp-intervals/spiked-tempo-5x15min-at-78pct-30s-at-150pct-accelerations.zwo"
    },
    {
      "slug": "sweet-spot-3-level-ou-3x4-u-88-o1-100-o2-110",
      "name": "Sweet Spot 3-Level OU 3×4 (U 88/O1 100/O2 110)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3420,
      "intensity_summary": "12×15s @ 110% FTP",
      "tss": 60.7,
      "intensity_factor": 0.799,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.357,
        "z2": 0.0,
        "z3": 0.429,
        "z4": 0.143,
        "z5": 0.071
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-3-level-ou-3x4-u-88-o1-100-o2-110.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-3-level-ou-3x4-u-88-o1-100-o2-110.zwo"
    },
    {
      "slug": "sweet-spot-over-unders-1x4-2minat88-1minat100",
      "name": "Sweet Spot Over-Unders 1×4 (2min@88/1min@100)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2040,
      "intensity_summary": "4×1min @ 100% FTP",
      "tss": 33.0,
      "intensity_factor": 0.763,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.294,
        "z2": 0.0,
        "z3": 0.471,
        "z4": 0.235,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-buffering"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-over-unders-1x4-2minat88-1minat100.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 78,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-over-unders-1x4-2minat88-1minat100.zwo"
    },
    {
      "slug": "sweet-spot-over-unders-2x5-2minat88-1minat100",
      "name": "Sweet Spot Over-Unders 2×5 (2min@88/1min@100)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3420,
      "intensity_summary": "10×1min @ 100% FTP",
      "tss": 62.8,
      "intensity_factor": 0.813,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.25,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.25,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-buffering"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-over-unders-2x5-2minat88-1minat100.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 78,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-over-unders-2x5-2minat88-1minat100.zwo"
    },
    {
      "slug": "sweet-spot-over-unders-3x3-2minat90-1minat105",
      "name": "Sweet Spot Over-Unders 3×3 (2min@90/1min@105)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3540,
      "intensity_summary": "9×1min @ 105% FTP",
      "tss": 65.0,
      "intensity_factor": 0.813,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.357,
        "z2": 0.0,
        "z3": 0.429,
        "z4": 0.214,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-buffering"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-over-unders-3x3-2minat90-1minat105.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 78,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-over-unders-3x3-2minat90-1minat105.zwo"
    },
    {
      "slug": "sweet-spot-over-unders-3x4-2minat88-1minat100",
      "name": "Sweet Spot Over-Unders 3×4 (2min@88/1min@100)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4080,
      "intensity_summary": "12×1min @ 100% FTP",
      "tss": 74.7,
      "intensity_factor": 0.812,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.294,
        "z2": 0.0,
        "z3": 0.471,
        "z4": 0.235,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-buffering"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-over-unders-3x4-2minat88-1minat100.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 78,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-over-unders-3x4-2minat88-1minat100.zwo"
    },
    {
      "slug": "sweet-spot-over-unders-3x5-90sat90-30sat105",
      "name": "Sweet Spot Over-Unders 3×5 (90s@90/30s@105)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3720,
      "intensity_summary": "15×30s @ 105% FTP",
      "tss": 67.9,
      "intensity_factor": 0.811,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.167,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "lactate-buffering"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-over-unders-3x5-90sat90-30sat105.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 78,
          "t": "WARMUP"
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 30,
          "z": "Z4",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-over-unders-3x5-90sat90-30sat105.zwo"
    },
    {
      "slug": "sweet-spot-pyramid-1-2-3-2-1-at-90pct",
      "name": "Sweet Spot Pyramid 1-2-3-2-1 @ 90%",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 1770,
      "intensity_summary": "5×1min @ 90% FTP",
      "tss": 24.9,
      "intensity_factor": 0.711,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.379,
        "z2": 0.0,
        "z3": 0.621,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-2-1-at-90pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-2-1-at-90pct.zwo"
    },
    {
      "slug": "sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct",
      "name": "Sweet Spot Pyramid 1-2-3-4-3-2-1 @ 90%",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2400,
      "intensity_summary": "7×1min @ 90% FTP",
      "tss": 36.9,
      "intensity_factor": 0.744,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.36,
        "z2": 0.0,
        "z3": 0.64,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct.zwo"
    },
    {
      "slug": "sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct-z3-stepped-rec",
      "name": "Sweet Spot Pyramid 1-2-3-4-3-2-1 @ 90% (Z3 Stepped Rec)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 2400,
      "intensity_summary": "7×1min @ 90% FTP",
      "tss": 40.9,
      "intensity_factor": 0.783,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct-z3-stepped-rec.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-3-2-1-at-90pct-z3-stepped-rec.zwo"
    },
    {
      "slug": "sweet-spot-pyramid-1-2-3-4-5-4-3-2-1-at-90pct",
      "name": "Sweet Spot Pyramid 1-2-3-4-5-4-3-2-1 @ 90%",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3210,
      "intensity_summary": "9×1min @ 90% FTP",
      "tss": 52.1,
      "intensity_factor": 0.765,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.351,
        "z2": 0.0,
        "z3": 0.649,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-5-4-3-2-1-at-90pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 150,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-pyramid-1-2-3-4-5-4-3-2-1-at-90pct.zwo"
    },
    {
      "slug": "sweet-spot-rolling-60min-at-85pct-3pct-gradient",
      "name": "Sweet Spot Rolling 60min @ 85% (±3% gradient)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4920,
      "intensity_summary": "2×10min @ 88% FTP",
      "tss": 89.5,
      "intensity_factor": 0.809,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-rolling-60min-at-85pct-3pct-gradient.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-rolling-60min-at-85pct-3pct-gradient.zwo"
    },
    {
      "slug": "sweet-spot-stack-2x25min-at-88pct-ftp",
      "name": "Sweet Spot Stack 2×25min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4380,
      "intensity_summary": "2×25min @ 88% FTP",
      "tss": 81.1,
      "intensity_factor": 0.816,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.107,
        "z2": 0.0,
        "z3": 0.893,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-2x25min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-2x25min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-stack-2x30min-at-88pct-ftp",
      "name": "Sweet Spot Stack 2×30min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4980,
      "intensity_summary": "2×30min @ 88% FTP",
      "tss": 94.1,
      "intensity_factor": 0.825,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.091,
        "z2": 0.0,
        "z3": 0.909,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-2x30min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-2x30min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-stack-2x30min-at-88pct-z3-mid-rec",
      "name": "Sweet Spot Stack 2×30min @ 88% (Z3 Mid-Rec)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4800,
      "intensity_summary": "2×30min @ 88% FTP",
      "tss": 93.3,
      "intensity_factor": 0.836,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-2x30min-at-88pct-z3-mid-rec.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-2x30min-at-88pct-z3-mid-rec.zwo"
    },
    {
      "slug": "sweet-spot-stack-2x40min-at-88pct-ftp",
      "name": "Sweet Spot Stack 2×40min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 6180,
      "intensity_summary": "2×40min @ 88% FTP",
      "tss": 120.1,
      "intensity_factor": 0.837,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.07,
        "z2": 0.0,
        "z3": 0.93,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-2x40min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-2x40min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-stack-2x40min-at-88pct-z3-mid-rec",
      "name": "Sweet Spot Stack 2×40min @ 88% (Z3 Mid-Rec)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 6000,
      "intensity_summary": "2×40min @ 88% FTP",
      "tss": 119.2,
      "intensity_factor": 0.846,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-2x40min-at-88pct-z3-mid-rec.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-2x40min-at-88pct-z3-mid-rec.zwo"
    },
    {
      "slug": "sweet-spot-stack-3x25min-at-88pct-ftp",
      "name": "Sweet Spot Stack 3×25min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 6060,
      "intensity_summary": "3×25min @ 88% FTP",
      "tss": 115.5,
      "intensity_factor": 0.828,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.107,
        "z2": 0.0,
        "z3": 0.893,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-3x25min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-3x25min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-stack-3x30min-at-88pct-ftp",
      "name": "Sweet Spot Stack 3×30min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 6960,
      "intensity_summary": "3×30min @ 88% FTP",
      "tss": 135.0,
      "intensity_factor": 0.836,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.091,
        "z2": 0.0,
        "z3": 0.909,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-3x30min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-3x30min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-stack-3x40min-at-88pct-ftp",
      "name": "Sweet Spot Stack 3×40min @ 88% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 8760,
      "intensity_summary": "3×40min @ 88% FTP",
      "tss": 173.9,
      "intensity_factor": 0.845,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.07,
        "z2": 0.0,
        "z3": 0.93,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-stack-3x40min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 2400,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-stack-3x40min-at-88pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-strides-3x8min-10s-strides",
      "name": "Sweet-Spot Strides (3×8min + 10s strides)",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 3090,
      "intensity_summary": "3×10s @ 200% FTP",
      "tss": 52.1,
      "intensity_factor": 0.779,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.329,
        "z2": 0.0,
        "z3": 0.658,
        "z4": 0.0,
        "z5": 0.014
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "neuromuscular-power",
        "sprint-power"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-strides-3x8min-10s-strides.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 72,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 10,
          "z": "Z5",
          "p": 200
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-strides-3x8min-10s-strides.zwo"
    },
    {
      "slug": "sweet-spot-sustained-45min-at-87pct-ftp",
      "name": "Sweet Spot Sustained 45min @ 87% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4020,
      "intensity_summary": "45min @ 87% FTP",
      "tss": 73.1,
      "intensity_factor": 0.809,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-sustained-45min-at-87pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 2700,
          "z": "Z3",
          "p": 87
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-sustained-45min-at-87pct-ftp.zwo"
    },
    {
      "slug": "sweet-spot-sustained-60min-at-85pct-ftp",
      "name": "Sweet Spot Sustained 60min @ 85% FTP",
      "set": "power",
      "category": "sweet-spot",
      "duration_seconds": 4920,
      "intensity_summary": "60min @ 85% FTP",
      "tss": 88.3,
      "intensity_factor": 0.804,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "fractional-utilization",
        "time-at-tempo",
        "mental-toughness"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/sweet-spot/sweet-spot-sustained-60min-at-85pct-ftp.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 3600,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/sweet-spot/sweet-spot-sustained-60min-at-85pct-ftp.zwo"
    },
    {
      "slug": "anaerobic-capacity-test-1min-3min-stacked",
      "name": "Anaerobic Capacity Test (1min + 3min stacked)",
      "set": "power",
      "category": "tests",
      "duration_seconds": 2640,
      "intensity_summary": "1min @ 180% FTP",
      "tss": 49.3,
      "intensity_factor": 0.82,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.789,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.211
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/anaerobic-capacity-test-1min-3min-stacked.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 180
        },
        {
          "d": 900,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/anaerobic-capacity-test-1min-3min-stacked.zwo"
    },
    {
      "slug": "coggan-20-minute-ftp-test-primer-20min-at-max",
      "name": "Coggan 20-Minute FTP Test (primer + 20min @ max)",
      "set": "power",
      "category": "tests",
      "duration_seconds": 3600,
      "intensity_summary": "5min @ 110% FTP",
      "tss": 71.4,
      "intensity_factor": 0.845,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.286,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.571,
        "z5": 0.143
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/coggan-20-minute-ftp-test-primer-20min-at-max.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/coggan-20-minute-ftp-test-primer-20min-at-max.zwo"
    },
    {
      "slug": "critical-power-3-min-all-out-test",
      "name": "Critical Power 3-Min All-Out Test",
      "set": "power",
      "category": "tests",
      "duration_seconds": 1680,
      "intensity_summary": "3min @ 130% FTP",
      "tss": 29.3,
      "intensity_factor": 0.792,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 1.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/critical-power-3-min-all-out-test.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/critical-power-3-min-all-out-test.zwo"
    },
    {
      "slug": "critical-power-test-set-3-12-min",
      "name": "Critical Power Test Set (3 + 12 min)",
      "set": "power",
      "category": "tests",
      "duration_seconds": 4200,
      "intensity_summary": "3min @ 130% FTP",
      "tss": 75.8,
      "intensity_factor": 0.806,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.667,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.333
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/critical-power-test-set-3-12-min.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 1800,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 720,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/critical-power-test-set-3-12-min.zwo"
    },
    {
      "slug": "friel-8-minute-ftp-test-2x-8min-at-max",
      "name": "Friel 8-Minute FTP Test (2× 8min @ max)",
      "set": "power",
      "category": "tests",
      "duration_seconds": 3060,
      "intensity_summary": "2×8min @ 110% FTP",
      "tss": 61.4,
      "intensity_factor": 0.85,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.385,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.615
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/friel-8-minute-ftp-test-2x-8min-at-max.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/friel-8-minute-ftp-test-2x-8min-at-max.zwo"
    },
    {
      "slug": "peak-5-minute-power-test",
      "name": "Peak 5-Minute Power Test",
      "set": "power",
      "category": "tests",
      "duration_seconds": 1800,
      "intensity_summary": "5min @ 120% FTP",
      "tss": 32.9,
      "intensity_factor": 0.811,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 1.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "fitness-diagnostic"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/tests/peak-5-minute-power-test.ytw",
      "sparkline": [
        {
          "d": 900,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 45,
          "e": 35,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/tests/peak-5-minute-power-test.zwo"
    },
    {
      "slug": "climb-sim-alpe-d-huez",
      "name": "Climb Sim — Alpe d'Huez",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 3420,
      "intensity_summary": "13min @ 95% FTP",
      "tss": 69.9,
      "intensity_factor": 0.858,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.675,
        "z4": 0.325,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-alpe-d-huez.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 92
        },
        {
          "d": 780,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-alpe-d-huez.zwo"
    },
    {
      "slug": "climb-sim-col-du-galibier",
      "name": "Climb Sim — Col du Galibier",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 3540,
      "intensity_summary": "10min @ 95% FTP",
      "tss": 62.2,
      "intensity_factor": 0.795,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.476,
        "z3": 0.286,
        "z4": 0.238,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-col-du-galibier.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 78
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-col-du-galibier.zwo"
    },
    {
      "slug": "climb-sim-col-du-tourmalet",
      "name": "Climb Sim — Col du Tourmalet",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 3120,
      "intensity_summary": "8min @ 100% FTP",
      "tss": 61.1,
      "intensity_factor": 0.84,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.629,
        "z4": 0.371,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-col-du-tourmalet.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-col-du-tourmalet.zwo"
    },
    {
      "slug": "climb-sim-mont-ventoux",
      "name": "Climb Sim — Mont Ventoux",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 3420,
      "intensity_summary": "12min @ 90% FTP",
      "tss": 57.9,
      "intensity_factor": 0.781,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.375,
        "z3": 0.625,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-mont-ventoux.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 780,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-mont-ventoux.zwo"
    },
    {
      "slug": "climb-sim-monte-zoncolan",
      "name": "Climb Sim — Monte Zoncolan",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 3000,
      "intensity_summary": "6min @ 115% FTP",
      "tss": 74.0,
      "intensity_factor": 0.942,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.152,
        "z3": 0.061,
        "z4": 0.212,
        "z5": 0.576
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-monte-zoncolan.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z2",
          "p": 75
        },
        {
          "d": 360,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 480,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 420,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-monte-zoncolan.zwo"
    },
    {
      "slug": "climb-sim-mortirolo",
      "name": "Climb Sim — Mortirolo",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 2880,
      "intensity_summary": "5min @ 115% FTP",
      "tss": 70.5,
      "intensity_factor": 0.939,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.097,
        "z4": 0.419,
        "z5": 0.484
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-mortirolo.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-mortirolo.zwo"
    },
    {
      "slug": "climb-sim-mount-washington",
      "name": "Climb Sim — Mount Washington",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 2820,
      "intensity_summary": "5min @ 115% FTP",
      "tss": 71.2,
      "intensity_factor": 0.953,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.333,
        "z5": 0.667
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-mount-washington.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 900,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-mount-washington.zwo"
    },
    {
      "slug": "climb-sim-passo-giau",
      "name": "Climb Sim — Passo Giau",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 2940,
      "intensity_summary": "2×5min @ 110% FTP",
      "tss": 70.4,
      "intensity_factor": 0.929,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 0.156,
        "z4": 0.25,
        "z5": 0.594
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-passo-giau.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 360,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-passo-giau.zwo"
    },
    {
      "slug": "climb-sim-sa-calobra",
      "name": "Climb Sim — Sa Calobra",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 2400,
      "intensity_summary": "4×5min @ 88% FTP",
      "tss": 40.0,
      "intensity_factor": 0.775,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.13,
        "z3": 0.87,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-sa-calobra.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-sa-calobra.zwo"
    },
    {
      "slug": "climb-sim-stelvio",
      "name": "Climb Sim — Stelvio",
      "set": "power",
      "category": "themed-climbs",
      "duration_seconds": 4020,
      "intensity_summary": "15min @ 90% FTP",
      "tss": 71.7,
      "intensity_factor": 0.802,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "indoor"
      ],
      "physiology_focus": [
        "lactate-threshold",
        "muscular-endurance",
        "race-pacing"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/themed-climbs/climb-sim-stelvio.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/themed-climbs/climb-sim-stelvio.zwo"
    },
    {
      "slug": "energy-system-sampler-35min-mixed-stimulus",
      "name": "Energy System Sampler (35min mixed-stimulus)",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 2660,
      "intensity_summary": "20s @ 130% FTP",
      "tss": 41.9,
      "intensity_factor": 0.753,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.233,
        "z2": 0.087,
        "z3": 0.568,
        "z4": 0.087,
        "z5": 0.024
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/energy-system-sampler-35min-mixed-stimulus.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 45,
          "e": 55,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z2",
          "p": 50,
          "e": 70
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z3",
          "p": 70
        },
        {
          "d": 30,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 30,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 30,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 30,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 85
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/energy-system-sampler-35min-mixed-stimulus.zwo"
    },
    {
      "slug": "time-budget-120min-endurance-base-single-100-min-z2-block",
      "name": "Time-Budget 120min — endurance base — single 100-min Z2 block",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 7200,
      "intensity_summary": "100min @ 68% FTP",
      "tss": 87.8,
      "intensity_factor": 0.662,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 1.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "aerobic-base",
        "fat-oxidation"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-120min-endurance-base-single-100-min-z2-block.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 6000,
          "z": "Z2",
          "p": 68
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-120min-endurance-base-single-100-min-z2-block.zwo"
    },
    {
      "slug": "time-budget-120min-race-sim-mixed-z2-tempo-2x-threshold-z2-close",
      "name": "Time-Budget 120min — race-sim mixed — Z2 + tempo + 2× threshold + Z2 close",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 7200,
      "intensity_summary": "2×10min @ 95% FTP",
      "tss": 111.6,
      "intensity_factor": 0.747,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.03,
        "z2": 0.57,
        "z3": 0.2,
        "z4": 0.2,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "lactate-threshold",
        "aerobic-base"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-120min-race-sim-mixed-z2-tempo-2x-threshold-z2-close.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 1620,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-120min-race-sim-mixed-z2-tempo-2x-threshold-z2-close.zwo"
    },
    {
      "slug": "time-budget-20min-lunch-break-hiit-5x-1-min-at-110pct-1-min-recovery",
      "name": "Time-Budget 20min — lunch-break HIIT — 5× 1-min @ 110% / 1-min recovery",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 900,
      "intensity_summary": "5×1min @ 110% FTP",
      "tss": 17.4,
      "intensity_factor": 0.835,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.444,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.556
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "vo2max"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-20min-lunch-break-hiit-5x-1-min-at-110pct-1-min-recovery.ytw",
      "sparkline": [
        {
          "d": 240,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-20min-lunch-break-hiit-5x-1-min-at-110pct-1-min-recovery.zwo"
    },
    {
      "slug": "time-budget-20min-sweet-spot-quick-2x-5-min-at-90pct-ftp",
      "name": "Time-Budget 20min — sweet-spot quick — 2× 5-min @ 90% FTP",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 1080,
      "intensity_summary": "2×5min @ 90% FTP",
      "tss": 19.2,
      "intensity_factor": 0.8,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.231,
        "z2": 0.0,
        "z3": 0.769,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-20min-sweet-spot-quick-2x-5-min-at-90pct-ftp.ytw",
      "sparkline": [
        {
          "d": 180,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-20min-sweet-spot-quick-2x-5-min-at-90pct-ftp.zwo"
    },
    {
      "slug": "time-budget-30min-tempo-2x-threshold-finisher",
      "name": "Time-Budget 30min — tempo + 2× threshold finisher",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 1800,
      "intensity_summary": "2×6min @ 98% FTP",
      "tss": 36.1,
      "intensity_factor": 0.85,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.091,
        "z2": 0.0,
        "z3": 0.364,
        "z4": 0.545,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-30min-tempo-2x-threshold-finisher.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 98
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z4",
          "p": 98
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-30min-tempo-2x-threshold-finisher.zwo"
    },
    {
      "slug": "time-budget-40min-sweet-spot-block-single-25-min-at-88pct-ftp",
      "name": "Time-Budget 40min — sweet-spot block — single 25-min @ 88% FTP",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 2400,
      "intensity_summary": "25min @ 88% FTP",
      "tss": 43.2,
      "intensity_factor": 0.805,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-40min-sweet-spot-block-single-25-min-at-88pct-ftp.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 420,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-40min-sweet-spot-block-single-25-min-at-88pct-ftp.zwo"
    },
    {
      "slug": "time-budget-40min-tempo-cruise-single-20-min-block-at-80pct-ftp",
      "name": "Time-Budget 40min — tempo cruise — single 20-min block @ 80% FTP",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 2400,
      "intensity_summary": "20min @ 80% FTP",
      "tss": 34.1,
      "intensity_factor": 0.715,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.0,
        "z2": 0.0,
        "z3": 1.0,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-40min-tempo-cruise-single-20-min-block-at-80pct-ftp.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 80
        },
        {
          "d": 600,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-40min-tempo-cruise-single-20-min-block-at-80pct-ftp.zwo"
    },
    {
      "slug": "time-budget-45min-sweet-spot-over-unders-endurance",
      "name": "Time-Budget 45min — sweet-spot + over-unders + endurance",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 2700,
      "intensity_summary": "4×1min30s @ 100% FTP",
      "tss": 51.7,
      "intensity_factor": 0.831,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.333,
        "z3": 0.5,
        "z4": 0.167,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-45min-sweet-spot-over-unders-endurance.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 90,
          "z": "Z3",
          "p": 88
        },
        {
          "d": 90,
          "z": "Z4",
          "p": 100
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-45min-sweet-spot-over-unders-endurance.zwo"
    },
    {
      "slug": "time-budget-50min-coggan-2x20-min-at-95pct-ftp",
      "name": "Time-Budget 50min — Coggan 2×20-min @ 95% FTP",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 3180,
      "intensity_summary": "2×20min @ 95% FTP",
      "tss": 70.7,
      "intensity_factor": 0.895,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.111,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.889,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-50min-coggan-2x20-min-at-95pct-ftp.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 1200,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-50min-coggan-2x20-min-at-95pct-ftp.zwo"
    },
    {
      "slug": "time-budget-50min-sweet-spot-3x-30s-sprint-finisher",
      "name": "Time-Budget 50min — sweet-spot + 3× 30s sprint finisher",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 2790,
      "intensity_summary": "3×30s @ 150% FTP",
      "tss": 57.7,
      "intensity_factor": 0.863,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.16,
        "z2": 0.0,
        "z3": 0.8,
        "z4": 0.0,
        "z5": 0.04
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "neuromuscular"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-50min-sweet-spot-3x-30s-sprint-finisher.ytw",
      "sparkline": [
        {
          "d": 360,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 1800,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 90,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 150
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-50min-sweet-spot-3x-30s-sprint-finisher.zwo"
    },
    {
      "slug": "time-budget-60min-sweet-spot-stack-vo2-finisher-endurance",
      "name": "Time-Budget 60min — sweet-spot stack + VO2 finisher + endurance",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 3480,
      "intensity_summary": "4min @ 110% FTP",
      "tss": 63.7,
      "intensity_factor": 0.812,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.111,
        "z2": 0.267,
        "z3": 0.533,
        "z4": 0.0,
        "z5": 0.089
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "vo2max"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-60min-sweet-spot-stack-vo2-finisher-endurance.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 720,
          "z": "Z3",
          "p": 90
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 720,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-60min-sweet-spot-stack-vo2-finisher-endurance.zwo"
    },
    {
      "slug": "time-budget-75min-polarised-z2-base-with-3x-4-min-z5-hits-embedded",
      "name": "Time-Budget 75min — polarised — Z2 base with 3× 4-min Z5 hits embedded",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 4380,
      "intensity_summary": "3×4min @ 110% FTP",
      "tss": 73.5,
      "intensity_factor": 0.777,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.789,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.211
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold",
        "vo2max",
        "aerobic-base"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-75min-polarised-z2-base-with-3x-4-min-z5-hits-embedded.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 480,
          "z": "Z1",
          "p": 55,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-75min-polarised-z2-base-with-3x-4-min-z5-hits-embedded.zwo"
    },
    {
      "slug": "time-budget-75min-progressive-build-z2-base-tempo-middle-threshold-finisher",
      "name": "Time-Budget 75min — progressive build — Z2 base → tempo middle → threshold finisher",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 4200,
      "intensity_summary": "12min @ 95% FTP",
      "tss": 70.2,
      "intensity_factor": 0.776,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.0,
        "z2": 0.439,
        "z3": 0.351,
        "z4": 0.211,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-75min-progressive-build-z2-base-tempo-middle-threshold-finisher.ytw",
      "sparkline": [
        {
          "d": 480,
          "z": "Z2",
          "p": 50,
          "e": 65,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z2",
          "p": 68
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 82
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-75min-progressive-build-z2-base-tempo-middle-threshold-finisher.zwo"
    },
    {
      "slug": "time-budget-90min-endurance-base-2x-threshold-endurance-close",
      "name": "Time-Budget 90min — endurance base + 2× threshold + endurance close",
      "set": "power",
      "category": "time-budget",
      "duration_seconds": 5220,
      "intensity_summary": "2×12min @ 98% FTP",
      "tss": 89.6,
      "intensity_factor": 0.786,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.07,
        "z2": 0.592,
        "z3": 0.0,
        "z4": 0.338,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "aerobic-endurance",
        "lactate-threshold"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/time-budget/time-budget-90min-endurance-base-2x-threshold-endurance-close.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 70,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z2",
          "p": 70
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 98
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 720,
          "z": "Z4",
          "p": 98
        },
        {
          "d": 1020,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 360,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/time-budget/time-budget-90min-endurance-base-2x-threshold-endurance-close.zwo"
    },
    {
      "slug": "billat-30-30-14-reps-at-110pct-vvo2max-anchored",
      "name": "Billat 30/30 (14 reps @ 110% / vVO2max-anchored)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 1740,
      "intensity_summary": "14×30s @ 110% FTP",
      "tss": 27.6,
      "intensity_factor": 0.755,
      "difficulty_score": {
        "overall": 4,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/billat-30-30-14-reps-at-110pct-vvo2max-anchored.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/billat-30-30-14-reps-at-110pct-vvo2max-anchored.zwo"
    },
    {
      "slug": "block-combo-vo2-threshold-3x3min-at-110pct-2x8min-at-95pct",
      "name": "Block Combo VO2→Threshold (3×3min @ 110% + 2×8min @ 95%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3720,
      "intensity_summary": "3×3min @ 110% FTP",
      "tss": 70.4,
      "intensity_factor": 0.825,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.468,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.34,
        "z5": 0.191
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/block-combo-vo2-threshold-3x3min-at-110pct-2x8min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/block-combo-vo2-threshold-3x3min-at-110pct-2x8min-at-95pct.zwo"
    },
    {
      "slug": "block-combo-vo2-threshold-3x4min-at-110pct-2x10min-at-95pct",
      "name": "Block Combo VO2→Threshold (3×4min @ 110% + 2×10min @ 95%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 4140,
      "intensity_summary": "3×4min @ 110% FTP",
      "tss": 83.6,
      "intensity_factor": 0.853,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.407,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.37,
        "z5": 0.222
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/block-combo-vo2-threshold-3x4min-at-110pct-2x10min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/block-combo-vo2-threshold-3x4min-at-110pct-2x10min-at-95pct.zwo"
    },
    {
      "slug": "block-combo-vo2-threshold-4x3min-at-110pct-2x10min-at-95pct",
      "name": "Block Combo VO2→Threshold (4×3min @ 110% + 2×10min @ 95%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 4320,
      "intensity_summary": "4×3min @ 110% FTP",
      "tss": 85.3,
      "intensity_factor": 0.843,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.439,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.351,
        "z5": 0.211
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-threshold",
        "fractional-utilization"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/block-combo-vo2-threshold-4x3min-at-110pct-2x10min-at-95pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 600,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/block-combo-vo2-threshold-4x3min-at-110pct-2x10min-at-95pct.zwo"
    },
    {
      "slug": "r-nnestad-30-15-3x13-at-115pct",
      "name": "Rønnestad 30/15 (3×13 @ 115%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3375,
      "intensity_summary": "39×30s @ 115% FTP",
      "tss": 65.3,
      "intensity_factor": 0.835,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.236,
        "z2": 0.291,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.473
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/r-nnestad-30-15-3x13-at-115pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z2",
          "p": 55
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/r-nnestad-30-15-3x13-at-115pct.zwo"
    },
    {
      "slug": "vo2-intermittent-2x-8min-at-95pct-12x15s-at-240pct",
      "name": "VO2 Intermittent 2× (8min @ 95% + 12×15s @ 240%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3060,
      "intensity_summary": "24×15s @ 240% FTP",
      "tss": 99.3,
      "intensity_factor": 1.081,
      "difficulty_score": {
        "overall": 9,
        "z1": 0.389,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.444,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2-intermittent-2x-8min-at-95pct-12x15s-at-240pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 480,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2-intermittent-2x-8min-at-95pct-12x15s-at-240pct.zwo"
    },
    {
      "slug": "vo2-intermittent-3x-5min-at-95pct-10x15s-at-240pct",
      "name": "VO2 Intermittent 3× (5min @ 95% + 10×15s @ 240%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3420,
      "intensity_summary": "30×15s @ 240% FTP",
      "tss": 114.3,
      "intensity_factor": 1.097,
      "difficulty_score": {
        "overall": 10,
        "z1": 0.464,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.357,
        "z5": 0.179
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2-intermittent-3x-5min-at-95pct-10x15s-at-240pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2-intermittent-3x-5min-at-95pct-10x15s-at-240pct.zwo"
    },
    {
      "slug": "vo2-intermittent-4x-4min-at-95pct-8x15s-at-240pct",
      "name": "VO2 Intermittent 4× (4min @ 95% + 8×15s @ 240%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3780,
      "intensity_summary": "32×15s @ 240% FTP",
      "tss": 124.3,
      "intensity_factor": 1.088,
      "difficulty_score": {
        "overall": 10,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.333,
        "z5": 0.167
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2-intermittent-4x-4min-at-95pct-8x15s-at-240pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z4",
          "p": 95
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 240
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2-intermittent-4x-4min-at-95pct-8x15s-at-240pct.zwo"
    },
    {
      "slug": "vo2max-3-level-ou-3x3-u-110-o1-130-o2-140",
      "name": "VO2max 3-Level OU 3×3 (U 110/O1 130/O2 140)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2865,
      "intensity_summary": "9×15s @ 140% FTP",
      "tss": 69.1,
      "intensity_factor": 0.932,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.488,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.512
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-3-level-ou-3x3-u-110-o1-130-o2-140.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 140
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-3-level-ou-3x3-u-110-o1-130-o2-140.zwo"
    },
    {
      "slug": "vo2max-3x6min-at-105pct",
      "name": "VO2max 3×6min @ 105%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2880,
      "intensity_summary": "3×6min @ 105% FTP",
      "tss": 57.0,
      "intensity_factor": 0.844,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.455,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.545
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-3x6min-at-105pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 360,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 360,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-3x6min-at-105pct.zwo"
    },
    {
      "slug": "vo2max-4x4min-at-108pct",
      "name": "VO2max 4×4min @ 108%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "4×4min @ 108% FTP",
      "tss": 56.0,
      "intensity_factor": 0.846,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-4x4min-at-108pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-4x4min-at-108pct.zwo"
    },
    {
      "slug": "vo2max-4x4min-at-108pct-stepped-recovery",
      "name": "VO2max 4×4min @ 108% (Stepped Recovery)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2580,
      "intensity_summary": "4×4min @ 108% FTP",
      "tss": 54.9,
      "intensity_factor": 0.875,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.143,
        "z2": 0.143,
        "z3": 0.143,
        "z4": 0.0,
        "z5": 0.571
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-4x4min-at-108pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 108
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-4x4min-at-108pct-stepped-recovery.zwo"
    },
    {
      "slug": "vo2max-4x4min-at-112pct",
      "name": "VO2max 4×4min @ 112%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "4×4min @ 112% FTP",
      "tss": 59.7,
      "intensity_factor": 0.873,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-4x4min-at-112pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-4x4min-at-112pct.zwo"
    },
    {
      "slug": "vo2max-4x4min-at-112pct-stepped-recovery",
      "name": "VO2max 4×4min @ 112% (Stepped Recovery)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2580,
      "intensity_summary": "4×4min @ 112% FTP",
      "tss": 58.4,
      "intensity_factor": 0.902,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.143,
        "z2": 0.143,
        "z3": 0.143,
        "z4": 0.0,
        "z5": 0.571
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-4x4min-at-112pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 112
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-4x4min-at-112pct-stepped-recovery.zwo"
    },
    {
      "slug": "vo2max-4x5min-at-110pct",
      "name": "VO2max 4×5min @ 110%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3060,
      "intensity_summary": "4×5min @ 110% FTP",
      "tss": 66.8,
      "intensity_factor": 0.887,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.444,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.556
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-4x5min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-4x5min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-5x3min-at-110pct",
      "name": "VO2max 5×3min @ 110%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2700,
      "intensity_summary": "5×3min @ 110% FTP",
      "tss": 54.6,
      "intensity_factor": 0.853,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-5x3min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-5x3min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-5x3min-at-110pct-stepped-recovery",
      "name": "VO2max 5×3min @ 110% (Stepped Recovery)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2700,
      "intensity_summary": "5×3min @ 110% FTP",
      "tss": 56.6,
      "intensity_factor": 0.869,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.167,
        "z2": 0.167,
        "z3": 0.167,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-5x3min-at-110pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-5x3min-at-110pct-stepped-recovery.zwo"
    },
    {
      "slug": "vo2max-5x4min-at-115pct",
      "name": "VO2max 5×4min @ 115%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3300,
      "intensity_summary": "5×4min @ 115% FTP",
      "tss": 75.2,
      "intensity_factor": 0.906,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-5x4min-at-115pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-5x4min-at-115pct.zwo"
    },
    {
      "slug": "vo2max-6x2min-at-115pct",
      "name": "VO2max 6×2min @ 115%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2340,
      "intensity_summary": "6×2min @ 115% FTP",
      "tss": 49.0,
      "intensity_factor": 0.868,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-6x2min-at-115pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-6x2min-at-115pct.zwo"
    },
    {
      "slug": "vo2max-6x2min-at-115pct-stepped-recovery",
      "name": "VO2max 6×2min @ 115% (Stepped Recovery)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2700,
      "intensity_summary": "6×2min @ 115% FTP",
      "tss": 55.5,
      "intensity_factor": 0.86,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.2,
        "z2": 0.2,
        "z3": 0.2,
        "z4": 0.0,
        "z5": 0.4
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-6x2min-at-115pct-stepped-recovery.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 60,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z2",
          "p": 60
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 45
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-6x2min-at-115pct-stepped-recovery.zwo"
    },
    {
      "slug": "vo2max-6x5min-at-110pct",
      "name": "VO2max 6×5min @ 110%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 4500,
      "intensity_summary": "6×5min @ 110% FTP",
      "tss": 98.5,
      "intensity_factor": 0.888,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-6x5min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-6x5min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-8x1min-at-120pct",
      "name": "VO2max 8×1min @ 120%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 1860,
      "intensity_summary": "8×1min @ 120% FTP",
      "tss": 37.5,
      "intensity_factor": 0.852,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-8x1min-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-8x1min-at-120pct.zwo"
    },
    {
      "slug": "vo2max-8x2min-at-115pct",
      "name": "VO2max 8×2min @ 115%",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "8×2min @ 115% FTP",
      "tss": 61.3,
      "intensity_factor": 0.885,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-8x2min-at-115pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-8x2min-at-115pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-10min-z2-10min-z3-3x4min-at-110pct",
      "name": "VO2max Back-Loaded (10min Z2 + 10min Z3 → 3×4min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3060,
      "intensity_summary": "3×4min @ 110% FTP",
      "tss": 58.1,
      "intensity_factor": 0.827,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.22,
        "z2": 0.244,
        "z3": 0.244,
        "z4": 0.0,
        "z5": 0.293
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-10min-z2-10min-z3-3x4min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-10min-z2-10min-z3-3x4min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-15min-z2-10min-z3-4x3min-at-110pct",
      "name": "VO2max Back-Loaded (15min Z2 + 10min Z3 → 4×3min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 3540,
      "intensity_summary": "4×3min @ 110% FTP",
      "tss": 63.6,
      "intensity_factor": 0.804,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.245,
        "z2": 0.306,
        "z3": 0.204,
        "z4": 0.0,
        "z5": 0.245
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-15min-z2-10min-z3-4x3min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 900,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-15min-z2-10min-z3-4x3min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-20min-z2-10min-z3-5x3min-at-110pct",
      "name": "VO2max Back-Loaded (20min Z2 + 10min Z3 → 5×3min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 4200,
      "intensity_summary": "5×3min @ 110% FTP",
      "tss": 76.3,
      "intensity_factor": 0.809,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.25,
        "z2": 0.333,
        "z3": 0.167,
        "z4": 0.0,
        "z5": 0.25
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-20min-z2-10min-z3-5x3min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 1200,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 600,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-20min-z2-10min-z3-5x3min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-25min-z2-15min-z3-4x4min-at-110pct",
      "name": "VO2max Back-Loaded (25min Z2 + 15min Z3 → 4×4min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 4680,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 86.1,
      "intensity_factor": 0.814,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.176,
        "z2": 0.368,
        "z3": 0.221,
        "z4": 0.0,
        "z5": 0.235
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-25min-z2-15min-z3-4x4min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 1500,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-25min-z2-15min-z3-4x4min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-60min-z2-15min-z3-4x4min-at-110pct",
      "name": "VO2max Back-Loaded (60min Z2 + 15min Z3 → 4×4min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 6780,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 112.6,
      "intensity_factor": 0.773,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.117,
        "z2": 0.583,
        "z3": 0.146,
        "z4": 0.0,
        "z5": 0.155
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-60min-z2-15min-z3-4x4min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 3600,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 900,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-60min-z2-15min-z3-4x4min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-back-loaded-90min-z2-20min-z3-5x3min-at-110pct",
      "name": "VO2max Back-Loaded (90min Z2 + 20min Z3 → 5×3min @ 110%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 9000,
      "intensity_summary": "5×3min @ 110% FTP",
      "tss": 138.5,
      "intensity_factor": 0.744,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.107,
        "z2": 0.643,
        "z3": 0.143,
        "z4": 0.0,
        "z5": 0.107
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "aerobic-endurance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-back-loaded-90min-z2-20min-z3-5x3min-at-110pct.ytw",
      "sparkline": [
        {
          "d": 300,
          "z": "Z2",
          "p": 50,
          "e": 60,
          "t": "WARMUP"
        },
        {
          "d": 5400,
          "z": "Z2",
          "p": 65
        },
        {
          "d": 1200,
          "z": "Z3",
          "p": 78
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-back-loaded-90min-z2-20min-z3-5x3min-at-110pct.zwo"
    },
    {
      "slug": "vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-high-cadence",
      "name": "VO2max Hard-Start 4×4min (30s @ 115% + 3:30 @ 105% FTP) · High cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "4×30s @ 115% FTP",
      "tss": 54.8,
      "intensity_factor": 0.837,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-high-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-high-cadence.zwo"
    },
    {
      "slug": "vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-low-cadence",
      "name": "VO2max Hard-Start 4×4min (30s @ 115% + 3:30 @ 105% FTP) · Low cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "4×30s @ 115% FTP",
      "tss": 54.8,
      "intensity_factor": 0.837,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-low-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-low-cadence.zwo"
    },
    {
      "slug": "vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-standard-cadence",
      "name": "VO2max Hard-Start 4×4min (30s @ 115% + 3:30 @ 105% FTP) · Standard cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2820,
      "intensity_summary": "4×30s @ 115% FTP",
      "tss": 54.8,
      "intensity_factor": 0.837,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 80,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 115
        },
        {
          "d": 210,
          "z": "Z5",
          "p": 105
        },
        {
          "d": 240,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-hard-start-4x4min-30s-at-115pct-3-30-at-105pct-ftp-standard-cadence.zwo"
    },
    {
      "slug": "vo2max-microburst-pyramid-15-30-45s-tiers-x-4-reps-at-120pct",
      "name": "VO2max Microburst Pyramid (15/30/45s tiers × 4 reps @ 120%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2160,
      "intensity_summary": "20×15s @ 120% FTP",
      "tss": 39.6,
      "intensity_factor": 0.812,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.429,
        "z2": 0.0,
        "z3": 0.143,
        "z4": 0.0,
        "z5": 0.429
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-microburst-pyramid-15-30-45s-tiers-x-4-reps-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 15,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 15,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-microburst-pyramid-15-30-45s-tiers-x-4-reps-at-120pct.zwo"
    },
    {
      "slug": "vo2max-microburst-pyramid-20-40-60s-tiers-x-3-reps-at-120pct",
      "name": "VO2max Microburst Pyramid (20/40/60s tiers × 3 reps @ 120%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2160,
      "intensity_summary": "15×20s @ 120% FTP",
      "tss": 41.2,
      "intensity_factor": 0.829,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.429,
        "z2": 0.0,
        "z3": 0.143,
        "z4": 0.0,
        "z5": 0.429
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-microburst-pyramid-20-40-60s-tiers-x-3-reps-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 60,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 40,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-microburst-pyramid-20-40-60s-tiers-x-3-reps-at-120pct.zwo"
    },
    {
      "slug": "vo2max-microbursts-10x40s-20s",
      "name": "VO2max Microbursts 10×40s/20s",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 1500,
      "intensity_summary": "10×40s @ 120% FTP",
      "tss": 29.6,
      "intensity_factor": 0.843,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.667
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-microbursts-10x40s-20s.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-microbursts-10x40s-20s.zwo"
    },
    {
      "slug": "vo2max-microbursts-16x30s-30s",
      "name": "VO2max Microbursts 16×30s/30s",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 1860,
      "intensity_summary": "16×30s @ 125% FTP",
      "tss": 36.0,
      "intensity_factor": 0.835,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.5
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-microbursts-16x30s-30s.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 125
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-microbursts-16x30s-30s.zwo"
    },
    {
      "slug": "vo2max-microbursts-2x12-multi-block-z3-active-rec",
      "name": "VO2max Microbursts 2×12 (Multi-Block + Z3 Active Rec)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2700,
      "intensity_summary": "24×30s @ 120% FTP",
      "tss": 51.2,
      "intensity_factor": 0.826,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.2,
        "z4": 0.0,
        "z5": 0.4
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-microbursts-2x12-multi-block-z3-active-rec.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-microbursts-2x12-multi-block-z3-active-rec.zwo"
    },
    {
      "slug": "vo2max-mixed-microbursts-10x30s-30s-8x45s-45s-at-120pct",
      "name": "VO2max Mixed Microbursts (10×30s/30s + 8×45s/45s @ 120%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2580,
      "intensity_summary": "18×30s @ 120% FTP",
      "tss": 50.1,
      "intensity_factor": 0.836,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.393,
        "z2": 0.0,
        "z3": 0.214,
        "z4": 0.0,
        "z5": 0.393
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-mixed-microbursts-10x30s-30s-8x45s-45s-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 45,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 45,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-mixed-microbursts-10x30s-30s-8x45s-45s-at-120pct.zwo"
    },
    {
      "slug": "vo2max-mixed-microbursts-12x20s-20s-6x60s-30s-at-120pct",
      "name": "VO2max Mixed Microbursts (12×20s/20s + 6×60s/30s @ 120%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2280,
      "intensity_summary": "18×20s @ 120% FTP",
      "tss": 44.8,
      "intensity_factor": 0.841,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.304,
        "z2": 0.0,
        "z3": 0.261,
        "z4": 0.0,
        "z5": 0.435
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-mixed-microbursts-12x20s-20s-6x60s-30s-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 20,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-mixed-microbursts-12x20s-20s-6x60s-30s-at-120pct.zwo"
    },
    {
      "slug": "vo2max-mixed-microbursts-15x30s-30s-10x40s-20s-at-120pct",
      "name": "VO2max Mixed Microbursts (15×30s/30s + 10×40s/20s @ 120%)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2760,
      "intensity_summary": "25×30s @ 120% FTP",
      "tss": 56.6,
      "intensity_factor": 0.86,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.349,
        "z2": 0.0,
        "z3": 0.194,
        "z4": 0.0,
        "z5": 0.457
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-mixed-microbursts-15x30s-30s-10x40s-20s-at-120pct.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 30,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 40,
          "z": "Z5",
          "p": 120
        },
        {
          "d": 20,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 75
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-mixed-microbursts-15x30s-30s-10x40s-20s-at-120pct.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-2min-recovery-high-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 2min recovery · High cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2220,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 51.0,
      "intensity_factor": 0.91,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.727
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-high-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-high-cadence.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-2min-recovery-low-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 2min recovery · Low cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2220,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 51.0,
      "intensity_factor": 0.91,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.727
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-low-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-low-cadence.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-2min-recovery-standard-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 2min recovery · Standard cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2220,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 51.0,
      "intensity_factor": 0.91,
      "difficulty_score": {
        "overall": 7,
        "z1": 0.273,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.727
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 55
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-2min-recovery-standard-cadence.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-3min-recovery-high-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 3min recovery · High cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2400,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 53.0,
      "intensity_factor": 0.891,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.36,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.64
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-high-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "high",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-high-cadence.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-3min-recovery-low-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 3min recovery · Low cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2400,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 53.0,
      "intensity_factor": 0.891,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.36,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.64
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-low-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "low",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-low-cadence.zwo"
    },
    {
      "slug": "vo2max-norwegian-4x4min-at-110pct-3min-recovery-standard-cadence",
      "name": "VO2max Norwegian 4×4min @ 110% / 3min recovery · Standard cadence",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2400,
      "intensity_summary": "4×4min @ 110% FTP",
      "tss": 53.0,
      "intensity_factor": 0.891,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.36,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.64
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-standard-cadence.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 180,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "repeatable": false,
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-norwegian-4x4min-at-110pct-3min-recovery-standard-cadence.zwo"
    },
    {
      "slug": "vo2max-over-unders-3x3-underat110-overat130",
      "name": "VO2max Over-Unders 3×3 (Under@110/Over@130)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2730,
      "intensity_summary": "9×30s @ 130% FTP",
      "tss": 59.4,
      "intensity_factor": 0.885,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.526,
        "z2": 0.0,
        "z3": 0.0,
        "z4": 0.0,
        "z5": 0.474
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "lactate-tolerance"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-over-unders-3x3-underat110-overat130.ytw",
      "sparkline": [
        {
          "d": 720,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 60,
          "z": "Z5",
          "p": 110
        },
        {
          "d": 30,
          "z": "Z5",
          "p": 130
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-over-unders-3x3-underat110-overat130.zwo"
    },
    {
      "slug": "vo2max-ramped-3x5min-88-115pct-ftp-build",
      "name": "VO2max Ramped 3×5min (88→115% FTP build)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2160,
      "intensity_summary": "3×5min @ 88% FTP",
      "tss": 42.9,
      "intensity_factor": 0.846,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.286,
        "z2": 0.0,
        "z3": 0.714,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-ramped-3x5min-88-115pct-ftp-build.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-ramped-3x5min-88-115pct-ftp-build.zwo"
    },
    {
      "slug": "vo2max-ramped-4x4min-88-115pct-ftp-build",
      "name": "VO2max Ramped 4×4min (88→115% FTP build)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2340,
      "intensity_summary": "4×4min @ 88% FTP",
      "tss": 45.9,
      "intensity_factor": 0.841,
      "difficulty_score": {
        "overall": 6,
        "z1": 0.333,
        "z2": 0.0,
        "z3": 0.667,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-ramped-4x4min-88-115pct-ftp-build.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 240,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-ramped-4x4min-88-115pct-ftp-build.zwo"
    },
    {
      "slug": "vo2max-ramped-5x3min-88-115pct-ftp-build",
      "name": "VO2max Ramped 5×3min (88→115% FTP build)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2400,
      "intensity_summary": "5×3min @ 88% FTP",
      "tss": 45.1,
      "intensity_factor": 0.822,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.6,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-ramped-5x3min-88-115pct-ftp-build.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-ramped-5x3min-88-115pct-ftp-build.zwo"
    },
    {
      "slug": "vo2max-ramped-6x2min-88-115pct-ftp-build",
      "name": "VO2max Ramped 6×2min (88→115% FTP build)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2340,
      "intensity_summary": "6×2min @ 88% FTP",
      "tss": 40.2,
      "intensity_factor": 0.786,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.5,
        "z2": 0.0,
        "z3": 0.5,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-ramped-6x2min-88-115pct-ftp-build.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 120,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-ramped-6x2min-88-115pct-ftp-build.zwo"
    },
    {
      "slug": "vo2max-ramped-6x3min-88-115pct-ftp-build",
      "name": "VO2max Ramped 6×3min (88→115% FTP build)",
      "set": "power",
      "category": "vo2max",
      "duration_seconds": 2700,
      "intensity_summary": "6×3min @ 88% FTP",
      "tss": 51.9,
      "intensity_factor": 0.832,
      "difficulty_score": {
        "overall": 5,
        "z1": 0.4,
        "z2": 0.0,
        "z3": 0.6,
        "z4": 0.0,
        "z5": 0.0
      },
      "discipline_tags": [
        "road",
        "tt",
        "indoor"
      ],
      "physiology_focus": [
        "vo2max",
        "anaerobic-capacity",
        "pacing-discipline"
      ],
      "requires_power_meter": true,
      "version": 1,
      "launch_slice": true,
      "file_path": "library/power/vo2max/vo2max-ramped-6x3min-88-115pct-ftp-build.ytw",
      "sparkline": [
        {
          "d": 600,
          "z": "Z2",
          "p": 50,
          "e": 75,
          "t": "WARMUP"
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 180,
          "z": "Z3",
          "p": 88,
          "e": 115
        },
        {
          "d": 120,
          "z": "Z1",
          "p": 50
        },
        {
          "d": 300,
          "z": "Z1",
          "p": 50,
          "e": 40,
          "t": "COOLDOWN"
        }
      ],
      "cadence_focus": "standard",
      "locale_variants": [
        "de",
        "en",
        "es",
        "fr",
        "it",
        "ja",
        "nl",
        "pt-BR",
        "zh-TW"
      ],
      "provenance": {
        "difficulty_source": "mcp",
        "validated_by": "mcp",
        "mcp_version": "3.3.1"
      },
      "zwo_path": "library/power/vo2max/vo2max-ramped-6x3min-88-115pct-ftp-build.zwo"
    }
  ]
}
