{
  "version": "1.0",
  "hub": "aifithub",
  "generated_at": "2026-05-27T14:12:22.663Z",
  "total": 57,
  "base": "https://aifithub.io/engines/",
  "engines": [
    {
      "slug": "bmi-calculator",
      "url": "https://aifithub.io/engines/bmi-calculator.js",
      "types": "https://aifithub.io/engines/bmi-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "height_cm"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "bmi": {
            "type": "number"
          },
          "rangeLabel": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "bmi_calculator",
        "weight_kg": 80,
        "height_cm": 178
      },
      "usage": "Client-side calculator. Open https://aifithub.io/bmi-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/bmi-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "bmr-calculator",
      "url": "https://aifithub.io/engines/bmr-calculator.js",
      "types": "https://aifithub.io/engines/bmr-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "age": {
            "type": "integer"
          },
          "weight_kg": {
            "type": "integer"
          },
          "height_cm": {
            "type": "integer"
          },
          "activity_level": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "sex",
          "age",
          "weight_kg",
          "height_cm",
          "activity_level"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "primaryLabel": {
            "type": "string"
          },
          "primaryValue": {
            "type": "number"
          },
          "primaryFormat": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "format": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {}
          },
          "assumptionsEcho": {
            "type": "object",
            "properties": {
              "sex": {
                "type": "string"
              },
              "age": {
                "type": "number"
              },
              "weight_kg": {
                "type": "number"
              },
              "height_cm": {
                "type": "number"
              },
              "activity_level": {
                "type": "string"
              }
            }
          }
        }
      },
      "example": {
        "tool": "bmr_calculator",
        "sex": "male",
        "age": 30,
        "weight_kg": 78,
        "height_cm": 178,
        "activity_level": "moderate"
      },
      "usage": null
    },
    {
      "slug": "body-fat-percentage-calculator",
      "url": "https://aifithub.io/engines/body-fat-percentage-calculator.js",
      "types": "https://aifithub.io/engines/body-fat-percentage-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "waist_cm": {
            "type": "number"
          },
          "neck_cm": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "waist_cm",
          "neck_cm",
          "height_cm"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "bodyFatPercent": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "body_fat_percentage_calculator",
        "sex": "male",
        "waist_cm": 85,
        "neck_cm": 38,
        "height_cm": 178
      },
      "usage": "Client-side calculator. Open https://aifithub.io/body-fat-percentage-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/body-fat-percentage-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "body-recomposition-planner",
      "url": "https://aifithub.io/engines/body-recomposition-planner.js",
      "types": "https://aifithub.io/engines/body-recomposition-planner.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "integer"
          },
          "body_fat_percent": {
            "type": "integer"
          },
          "target_body_fat_percent": {
            "type": "integer"
          },
          "weeks": {
            "type": "integer"
          },
          "resistance_training_days": {
            "type": "integer"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "body_fat_percent",
          "target_body_fat_percent",
          "weeks",
          "resistance_training_days"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "primaryLabel": {
            "type": "string"
          },
          "primaryValue": {
            "type": "number"
          },
          "primaryFormat": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "format": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {}
          },
          "assumptionsEcho": {
            "type": "object",
            "properties": {
              "weight_kg": {
                "type": "number"
              },
              "body_fat_percent": {
                "type": "number"
              },
              "target_body_fat_percent": {
                "type": "number"
              },
              "weeks": {
                "type": "number"
              },
              "resistance_training_days": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "body_recomposition",
        "weight_kg": 84,
        "body_fat_percent": 24,
        "target_body_fat_percent": 18,
        "weeks": 20,
        "resistance_training_days": 4
      },
      "usage": null
    },
    {
      "slug": "calorie-deficit-calculator",
      "url": "https://aifithub.io/engines/calorie-deficit-calculator.js",
      "types": "https://aifithub.io/engines/calorie-deficit-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "tdee": {
            "type": "number"
          },
          "current_weight_kg": {
            "type": "number"
          },
          "target_weight_kg": {
            "type": "number"
          },
          "weeks": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "tdee",
          "current_weight_kg",
          "target_weight_kg",
          "weeks"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "weightChangeKg": {
            "type": "number"
          },
          "totalCalorieDelta": {
            "type": "number"
          },
          "dailyDeficit": {
            "type": "number"
          },
          "weeklyRateKg": {
            "type": "number"
          },
          "targetDailyCalories": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "calorie_deficit_calculator",
        "tdee": 2200,
        "current_weight_kg": 85,
        "target_weight_kg": 75,
        "weeks": 20
      },
      "usage": "Client-side calculator. Open https://aifithub.io/calorie-deficit-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/calorie-deficit-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "calories-burned-calculator",
      "url": "https://aifithub.io/engines/calories-burned-calculator.js",
      "types": "https://aifithub.io/engines/calories-burned-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "integer"
          },
          "duration_minutes": {
            "type": "integer"
          },
          "activity_met": {
            "type": "number"
          },
          "incline_percent": {
            "type": "integer"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "duration_minutes",
          "activity_met",
          "incline_percent"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "primaryLabel": {
            "type": "string"
          },
          "primaryValue": {
            "type": "number"
          },
          "primaryFormat": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "format": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {}
          },
          "assumptionsEcho": {
            "type": "object",
            "properties": {
              "weight_kg": {
                "type": "number"
              },
              "duration_minutes": {
                "type": "number"
              },
              "activity_met": {
                "type": "number"
              },
              "incline_percent": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "calories_burned",
        "weight_kg": 78,
        "duration_minutes": 45,
        "activity_met": 7.5,
        "incline_percent": 0
      },
      "usage": null
    },
    {
      "slug": "concurrent-training-interference",
      "url": "https://aifithub.io/engines/concurrent-training-interference.js",
      "types": "https://aifithub.io/engines/concurrent-training-interference.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "lift_sessions_per_week": {
            "type": "number"
          },
          "run_volume_km_per_week": {
            "type": "number"
          },
          "run_intensity": {
            "type": "string"
          },
          "recovery_days": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "lift_sessions_per_week",
          "run_volume_km_per_week",
          "run_intensity",
          "recovery_days"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "strengthGainAttenuationPct": {
            "type": "number"
          },
          "hypertrophyAttenuationPct": {
            "type": "number"
          },
          "powerAttenuationPct": {
            "type": "number"
          },
          "riskBand": {
            "type": "string",
            "enum": [
              "low",
              "moderate",
              "high"
            ]
          },
          "recommendedSplit": {
            "type": "string"
          },
          "notes": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "concurrent_training_interference",
        "lift_sessions_per_week": 4,
        "run_volume_km_per_week": 30,
        "run_intensity": "moderate",
        "recovery_days": 1
      },
      "usage": "Client-side calculator. Open https://aifithub.io/concurrent-training-interference/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/concurrent-training-interference.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "creatine-intake-calculator",
      "url": "https://aifithub.io/engines/creatine-intake-calculator.js",
      "types": "https://aifithub.io/engines/creatine-intake-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "body_weight_kg": {
            "type": "integer"
          },
          "protocol": {
            "type": "string"
          },
          "loading_phase_days": {
            "type": "integer"
          },
          "training_days_per_week": {
            "type": "integer"
          }
        },
        "required": [
          "tool",
          "body_weight_kg",
          "protocol",
          "loading_phase_days",
          "training_days_per_week"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "primaryLabel": {
            "type": "string"
          },
          "primaryValue": {
            "type": "number"
          },
          "primaryFormat": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "format": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {}
          },
          "assumptionsEcho": {
            "type": "object",
            "properties": {
              "body_weight_kg": {
                "type": "number"
              },
              "protocol": {
                "type": "string"
              },
              "loading_phase_days": {
                "type": "number"
              },
              "training_days_per_week": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "creatine_intake",
        "body_weight_kg": 82,
        "protocol": "maintenance",
        "loading_phase_days": 7,
        "training_days_per_week": 4
      },
      "usage": null
    },
    {
      "slug": "cycling-power-ftp-zone-calculator",
      "url": "https://aifithub.io/engines/cycling-power-ftp-zone-calculator.js",
      "types": "https://aifithub.io/engines/cycling-power-ftp-zone-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "ftp": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "weight_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ftp": {
            "type": "number",
            "description": "Functional Threshold Power in watts"
          },
          "wPerKg": {
            "type": "number",
            "description": "Watts per kilogram of body weight"
          },
          "wPerKgCategory": {
            "type": "string",
            "description": "W/kg fitness category label"
          },
          "zones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "zone": {
                  "type": "number"
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "minWatts": {
                  "type": "number"
                },
                "maxWatts": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "cycling_power_ftp_zone_calculator",
        "ftp": 250,
        "weight_kg": 75
      },
      "usage": "Client-side calculator. Open https://aifithub.io/cycling-power-ftp-zone-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/cycling-power-ftp-zone-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "detraining-decay",
      "url": "https://aifithub.io/engines/detraining-decay.js",
      "types": "https://aifithub.io/engines/detraining-decay.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "prior_1rm": {
            "type": "number"
          },
          "weeks_off": {
            "type": "number"
          },
          "training_age_years": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "prior_1rm",
          "weeks_off",
          "training_age_years"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "predicted1RmAfterWeeksOff": {
            "type": "number"
          },
          "pctLossTotal": {
            "type": "number"
          },
          "decayRatePerWeek": {
            "type": "number"
          },
          "asymptotePctOfPeak": {
            "type": "number"
          },
          "retrainingWeeksToPeak": {
            "type": "number"
          },
          "weeklyTrajectory": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "detraining_decay",
        "prior_1rm": 150,
        "weeks_off": 4,
        "training_age_years": 3
      },
      "usage": "Client-side calculator. Open https://aifithub.io/detraining-decay/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/detraining-decay.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "dots-score-calculator",
      "url": "https://aifithub.io/engines/dots-score-calculator.js",
      "types": "https://aifithub.io/engines/dots-score-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "bodyweight_kg": {
            "type": "number"
          },
          "total_kg": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "bodyweight_kg",
          "total_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "dotsScore": {
            "type": "number"
          },
          "wilksScore": {
            "type": "number"
          },
          "classification": {
            "type": "string"
          },
          "bodyweightKg": {
            "type": "number"
          },
          "totalKg": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "dots_score_calculator",
        "sex": "male",
        "bodyweight_kg": 83,
        "total_kg": 500
      },
      "usage": "Client-side calculator. Open https://aifithub.io/dots-score-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/dots-score-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "dots-wilks-gl-combined-calculator",
      "url": "https://aifithub.io/engines/dots-wilks-gl-combined-calculator.js",
      "types": "https://aifithub.io/engines/dots-wilks-gl-combined-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ]
          },
          "bodyweight_kg": {
            "type": "number"
          },
          "total_kg": {
            "type": "number"
          },
          "equipped": {
            "type": "string",
            "enum": [
              "true",
              "false"
            ]
          }
        },
        "required": [
          "tool",
          "sex",
          "bodyweight_kg",
          "total_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "dots": {
            "type": "object"
          },
          "wilks": {
            "type": "object"
          },
          "gl": {
            "type": "object"
          },
          "bestSystem": {
            "type": "string"
          },
          "bodyweightKg": {
            "type": "number"
          },
          "totalKg": {
            "type": "number"
          },
          "bwRatio": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "dots_wilks_gl_combined",
        "sex": "male",
        "bodyweight_kg": 83,
        "total_kg": 500,
        "equipped": "false"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/dots-wilks-gl-combined-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/dots-wilks-gl-combined-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "female-athlete-formula-suite",
      "url": "https://aifithub.io/engines/female-athlete-formula-suite.js",
      "types": "https://aifithub.io/engines/female-athlete-formula-suite.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          },
          "age": {
            "type": "number"
          },
          "body_fat_pct": {
            "type": "number"
          },
          "category": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "height_cm",
          "age",
          "category"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ffmi": {
            "type": "number"
          },
          "ffmiCeiling": {
            "type": "number"
          },
          "bmrKcal": {
            "type": "number"
          },
          "estimatedVo2Max": {
            "type": "number"
          },
          "maxHeartRate": {
            "type": "number"
          },
          "bodyFatPctEstimated": {
            "type": "number"
          },
          "bmi": {
            "type": "number"
          },
          "caveats": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "female_athlete_formula_suite",
        "weight_kg": 65,
        "height_cm": 168,
        "age": 30,
        "body_fat_pct": 24,
        "category": "regular_cycle"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/female-athlete-formula-suite/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/female-athlete-formula-suite.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "ffmi-calculator",
      "url": "https://aifithub.io/engines/ffmi-calculator.js",
      "types": "https://aifithub.io/engines/ffmi-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          },
          "body_fat_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "height_cm",
          "body_fat_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ffmi": {
            "type": "number"
          },
          "adjustedFfmi": {
            "type": "number"
          },
          "fatFreeMassKg": {
            "type": "number"
          },
          "interpretation": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "ffmi_calculator",
        "weight_kg": 80,
        "height_cm": 178,
        "body_fat_pct": 15
      },
      "usage": "Client-side calculator. Open https://aifithub.io/ffmi-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/ffmi-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "flexibility-score-calculator",
      "url": "https://aifithub.io/engines/flexibility-score-calculator.js",
      "types": "https://aifithub.io/engines/flexibility-score-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "reach_cm": {
            "type": "number"
          },
          "age": {
            "type": "number"
          },
          "sex": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "reach_cm",
          "age",
          "sex"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "string"
          },
          "percentile": {
            "type": "number"
          },
          "targetCm": {
            "type": "number"
          },
          "improvementCm": {
            "type": "number"
          },
          "ratingMessage": {
            "type": "string"
          },
          "ageGroupLabel": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "flexibility_score",
        "reach_cm": 25,
        "age": 30,
        "sex": "male"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/flexibility-score-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/flexibility-score-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "food-to-exercise-converter",
      "url": "https://aifithub.io/engines/food-to-exercise-converter.js",
      "types": "https://aifithub.io/engines/food-to-exercise-converter.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "calories": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          },
          "food_name": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "calories",
          "weight_kg",
          "food_name"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "calories": {
            "type": "number"
          },
          "foodName": {
            "type": "string"
          },
          "weightKg": {
            "type": "number"
          },
          "exercises": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "met": {
                  "type": "number"
                },
                "minutes": {
                  "type": "number"
                },
                "formattedDuration": {
                  "type": "string"
                },
                "caloriesPer30Min": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "food_to_exercise",
        "calories": 285,
        "weight_kg": 70,
        "food_name": "Pizza slice"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/food-to-exercise-converter/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/food-to-exercise-converter.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "heart-rate-zone-calculator",
      "url": "https://aifithub.io/engines/heart-rate-zone-calculator.js",
      "types": "https://aifithub.io/engines/heart-rate-zone-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "age": {
            "type": "number"
          },
          "resting_hr": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "age",
          "resting_hr"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "maxHr": {
            "type": "number"
          },
          "hrr": {
            "type": "number"
          },
          "zones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "zone": {
                  "type": "string"
                },
                "lowBpm": {
                  "type": "number"
                },
                "highBpm": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "heart_rate_zone_calculator",
        "age": 30,
        "resting_hr": 60
      },
      "usage": "Client-side calculator. Open https://aifithub.io/heart-rate-zone-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/heart-rate-zone-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "hrv-deload-trigger",
      "url": "https://aifithub.io/engines/hrv-deload-trigger.js",
      "types": "https://aifithub.io/engines/hrv-deload-trigger.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "daily": {
            "type": "string"
          },
          "baseline_30_day": {
            "type": "number"
          },
          "baseline_std_dev": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "daily",
          "baseline_30_day"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "recommendation": {
            "type": "string",
            "enum": [
              "yes",
              "maybe",
              "no"
            ]
          },
          "rollingMean7Day": {
            "type": "number"
          },
          "rollingDeviationPct": {
            "type": "number"
          },
          "smallestWorthwhileChange": {
            "type": "number"
          },
          "daysBelowSwcInLastWeek": {
            "type": "number"
          },
          "longestConsecutiveBelowSwc": {
            "type": "number"
          },
          "detail": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "hrv_deload_trigger",
        "daily": "55,57,52,48,46,47,45",
        "baseline_30_day": 56,
        "baseline_std_dev": 0
      },
      "usage": "Client-side calculator. Open https://aifithub.io/hrv-deload-trigger/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/hrv-deload-trigger.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "hybrid-athlete-macro-split",
      "url": "https://aifithub.io/engines/hybrid-athlete-macro-split.js",
      "types": "https://aifithub.io/engines/hybrid-athlete-macro-split.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "body_fat_pct": {
            "type": "number"
          },
          "run_volume_km_week": {
            "type": "number"
          },
          "lift_sessions_week": {
            "type": "number"
          },
          "training_days": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "body_fat_pct",
          "run_volume_km_week",
          "lift_sessions_week",
          "training_days"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "proteinDailyG": {
            "type": "number"
          },
          "carbsDailyAvgG": {
            "type": "number"
          },
          "fatDailyAvgG": {
            "type": "number"
          },
          "weeklyAverageCalories": {
            "type": "number"
          },
          "leanMassKg": {
            "type": "number"
          },
          "trainingDay": {
            "type": "object"
          },
          "restDay": {
            "type": "object"
          }
        }
      },
      "example": {
        "tool": "hybrid_athlete_macro_split",
        "weight_kg": 75,
        "body_fat_pct": 18,
        "run_volume_km_week": 35,
        "lift_sessions_week": 3,
        "training_days": 5
      },
      "usage": "Client-side calculator. Open https://aifithub.io/hybrid-athlete-macro-split/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/hybrid-athlete-macro-split.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "hybrid-training-planner",
      "url": "https://aifithub.io/engines/hybrid-training-planner.js",
      "types": "https://aifithub.io/engines/hybrid-training-planner.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weekly_run_km": {
            "type": "number"
          },
          "easy_pct": {
            "type": "number"
          },
          "tempo_pct": {
            "type": "number"
          },
          "interval_pct": {
            "type": "number"
          },
          "lifting_sessions": {
            "type": "number"
          },
          "primary_goal": {
            "type": "string",
            "enum": [
              "strength",
              "endurance",
              "balanced"
            ]
          }
        },
        "required": [
          "tool",
          "weekly_run_km",
          "easy_pct",
          "tempo_pct",
          "interval_pct",
          "lifting_sessions",
          "primary_goal"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "schedule": {
            "type": "array"
          },
          "warnings": {
            "type": "array"
          },
          "totalTrainingLoad": {
            "type": "number"
          },
          "runVolume": {
            "type": "object"
          },
          "recoveryNote": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "hybrid_training",
        "weekly_run_km": 30,
        "easy_pct": 70,
        "tempo_pct": 20,
        "interval_pct": 10,
        "lifting_sessions": 3,
        "primary_goal": "balanced"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/hybrid-training-planner/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/hybrid-training-planner.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "ideal-weight-calculator",
      "url": "https://aifithub.io/engines/ideal-weight-calculator.js",
      "types": "https://aifithub.io/engines/ideal-weight-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "height_cm": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "height_cm"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "devineKg": {
            "type": "number"
          },
          "robinsonKg": {
            "type": "number"
          },
          "millerKg": {
            "type": "number"
          },
          "hamwiKg": {
            "type": "number"
          },
          "minKg": {
            "type": "number"
          },
          "maxKg": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "ideal_weight_calculator",
        "sex": "male",
        "height_cm": 178
      },
      "usage": "Client-side calculator. Open https://aifithub.io/ideal-weight-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/ideal-weight-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "intermittent-fasting-window-planner",
      "url": "https://aifithub.io/engines/intermittent-fasting-window-planner.js",
      "types": "https://aifithub.io/engines/intermittent-fasting-window-planner.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "protocol": {
            "type": "string"
          },
          "first_meal_time": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "protocol",
          "first_meal_time"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string"
          },
          "protocolLabel": {
            "type": "string"
          },
          "eatingHours": {
            "type": "number"
          },
          "fastingHours": {
            "type": "number"
          },
          "isDayBased": {
            "type": "boolean"
          },
          "tip": {
            "type": "string"
          },
          "eatingStartMinute": {
            "type": "number"
          },
          "eatingWindowStart": {
            "type": "object",
            "properties": {
              "hours": {
                "type": "number"
              },
              "minutes": {
                "type": "number"
              },
              "dayOffset": {
                "type": "number"
              }
            }
          },
          "eatingWindowEnd": {
            "type": "object",
            "properties": {
              "hours": {
                "type": "number"
              },
              "minutes": {
                "type": "number"
              },
              "dayOffset": {
                "type": "number"
              }
            }
          },
          "fastingWindowStart": {
            "type": "object",
            "properties": {
              "hours": {
                "type": "number"
              },
              "minutes": {
                "type": "number"
              },
              "dayOffset": {
                "type": "number"
              }
            }
          },
          "fastingWindowEnd": {
            "type": "object",
            "properties": {
              "hours": {
                "type": "number"
              },
              "minutes": {
                "type": "number"
              },
              "dayOffset": {
                "type": "number"
              }
            }
          },
          "fastDays": {
            "type": "array",
            "items": {}
          }
        }
      },
      "example": {
        "tool": "intermittent_fasting_window_planner",
        "protocol": "16:8",
        "first_meal_time": "12:00"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/intermittent-fasting-window-planner/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/intermittent-fasting-window-planner.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "junk-volume-detector",
      "url": "https://aifithub.io/engines/junk-volume-detector.js",
      "types": "https://aifithub.io/engines/junk-volume-detector.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "csv_log": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "csv_log"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "totalSets": {
            "type": "number"
          },
          "effectiveSets": {
            "type": "number"
          },
          "junkSets": {
            "type": "number"
          },
          "junkPctOverall": {
            "type": "number"
          },
          "perExercise": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "junk_volume_detector",
        "csv_log": "week,exercise,sets,reps,weight\n1,squat,3,5,100\n2,squat,3,5,102.5\n3,squat,3,5,103"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/junk-volume-detector/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/junk-volume-detector.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "lean-body-mass-calculator",
      "url": "https://aifithub.io/engines/lean-body-mass-calculator.js",
      "types": "https://aifithub.io/engines/lean-body-mass-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "weight_kg",
          "height_cm"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "formulas": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "lbmKg": {
                  "type": "number"
                },
                "bodyFatPct": {
                  "type": "number"
                }
              }
            }
          },
          "averageLbmKg": {
            "type": "number"
          },
          "averageBodyFatPct": {
            "type": "number"
          },
          "weightKg": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "lean_body_mass_calculator",
        "sex": "male",
        "weight_kg": 80,
        "height_cm": 178
      },
      "usage": "Client-side calculator. Open https://aifithub.io/lean-body-mass-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/lean-body-mass-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "macro-calculator",
      "url": "https://aifithub.io/engines/macro-calculator.js",
      "types": "https://aifithub.io/engines/macro-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "calories": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "calories",
          "weight_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "targetCalories": {
            "type": "number"
          },
          "proteinGrams": {
            "type": "number"
          },
          "carbGrams": {
            "type": "number"
          },
          "fatGrams": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "macro_calculator",
        "calories": 2200,
        "weight_kg": 80
      },
      "usage": "Client-side calculator. Open https://aifithub.io/macro-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/macro-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "macro-cycling-calculator",
      "url": "https://aifithub.io/engines/macro-cycling-calculator.js",
      "types": "https://aifithub.io/engines/macro-cycling-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "body_weight_kg": {
            "type": "number"
          },
          "body_fat_pct": {
            "type": "number"
          },
          "goal": {
            "type": "string",
            "enum": [
              "recomp",
              "lean_bulk",
              "cut"
            ]
          },
          "training_days_per_week": {
            "type": "number"
          },
          "tdee": {
            "type": "number"
          },
          "activity_level": {
            "type": "string",
            "enum": [
              "sedentary",
              "light",
              "moderate",
              "very",
              "athlete"
            ]
          }
        },
        "required": [
          "tool",
          "body_weight_kg",
          "goal",
          "training_days_per_week"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "trainingDay": {
            "type": "object"
          },
          "restDay": {
            "type": "object"
          },
          "weeklyAvgCalories": {
            "type": "number"
          },
          "proteinPerKg": {
            "type": "number"
          },
          "tdeeUsed": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "macro_cycling",
        "body_weight_kg": 80,
        "body_fat_pct": 18,
        "goal": "recomp",
        "training_days_per_week": 4,
        "tdee": 2500,
        "activity_level": "moderate"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/macro-cycling-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/macro-cycling-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "marathon-pace-elevation",
      "url": "https://aifithub.io/engines/marathon-pace-elevation.js",
      "types": "https://aifithub.io/engines/marathon-pace-elevation.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "target_distance_km": {
            "type": "number"
          },
          "target_time_minutes": {
            "type": "number"
          },
          "total_elevation_gain_m": {
            "type": "number"
          },
          "total_elevation_loss_m": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "target_distance_km",
          "target_time_minutes",
          "total_elevation_gain_m",
          "total_elevation_loss_m"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "averagePaceLabel": {
            "type": "string"
          },
          "flatEquivalentPaceLabel": {
            "type": "string"
          },
          "averagePaceSecondsPerKm": {
            "type": "number"
          },
          "flatEquivalentPaceSecondsPerKm": {
            "type": "number"
          },
          "netElevationCorrectionSeconds": {
            "type": "number"
          },
          "difficulty": {
            "type": "string"
          },
          "segments": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "marathon_pace_elevation",
        "target_distance_km": 42.195,
        "target_time_minutes": 240,
        "total_elevation_gain_m": 200,
        "total_elevation_loss_m": 200
      },
      "usage": "Client-side calculator. Open https://aifithub.io/marathon-pace-elevation/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/marathon-pace-elevation.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "meet-day-attempt-selector",
      "url": "https://aifithub.io/engines/meet-day-attempt-selector.js",
      "types": "https://aifithub.io/engines/meet-day-attempt-selector.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "squat_1rm": {
            "type": "number"
          },
          "bench_1rm": {
            "type": "number"
          },
          "deadlift_1rm": {
            "type": "number"
          },
          "squat_confidence": {
            "type": "string",
            "enum": [
              "conservative",
              "moderate",
              "aggressive"
            ]
          },
          "bench_confidence": {
            "type": "string",
            "enum": [
              "conservative",
              "moderate",
              "aggressive"
            ]
          },
          "deadlift_confidence": {
            "type": "string",
            "enum": [
              "conservative",
              "moderate",
              "aggressive"
            ]
          }
        },
        "required": [
          "tool",
          "squat_1rm",
          "bench_1rm",
          "deadlift_1rm"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "squat": {
            "type": "object"
          },
          "bench": {
            "type": "object"
          },
          "deadlift": {
            "type": "object"
          },
          "conservativeTotal": {
            "type": "number"
          },
          "moderateTotal": {
            "type": "number"
          },
          "aggressiveTotal": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "meet_day_attempts",
        "squat_1rm": 180,
        "bench_1rm": 120,
        "deadlift_1rm": 200,
        "squat_confidence": "moderate",
        "bench_confidence": "moderate",
        "deadlift_confidence": "moderate"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/meet-day-attempt-selector/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/meet-day-attempt-selector.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "muscle-gain-potential-calculator",
      "url": "https://aifithub.io/engines/muscle-gain-potential-calculator.js",
      "types": "https://aifithub.io/engines/muscle-gain-potential-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ]
          },
          "height_cm": {
            "type": "number"
          },
          "wrist_cm": {
            "type": "number"
          },
          "ankle_cm": {
            "type": "number"
          },
          "current_weight_kg": {
            "type": "number"
          },
          "current_body_fat_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "height_cm",
          "wrist_cm",
          "ankle_cm",
          "current_weight_kg",
          "current_body_fat_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "maxLeanMassKg": {
            "type": "number"
          },
          "maxWeightAt10PctBf": {
            "type": "number"
          },
          "currentLeanMassKg": {
            "type": "number"
          },
          "potentialReachedPct": {
            "type": "number"
          },
          "remainingGainKg": {
            "type": "number"
          },
          "estimatedYears": {
            "type": "number"
          },
          "heightCm": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "muscle_gain_potential",
        "sex": "male",
        "height_cm": 178,
        "wrist_cm": 17.5,
        "ankle_cm": 22,
        "current_weight_kg": 80,
        "current_body_fat_pct": 18
      },
      "usage": "Client-side calculator. Open https://aifithub.io/muscle-gain-potential-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/muscle-gain-potential-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "one-rep-max-calculator",
      "url": "https://aifithub.io/engines/one-rep-max-calculator.js",
      "types": "https://aifithub.io/engines/one-rep-max-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "reps": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "reps"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "epley": {
            "type": "number"
          },
          "brzycki": {
            "type": "number"
          },
          "lombardi": {
            "type": "number"
          },
          "average": {
            "type": "number"
          },
          "percentageTable": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "percent": {
                  "type": "number"
                },
                "weightKg": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "one_rep_max_calculator",
        "weight_kg": 100,
        "reps": 5
      },
      "usage": "Client-side calculator. Open https://aifithub.io/one-rep-max-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/one-rep-max-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "plate-loading-calculator",
      "url": "https://aifithub.io/engines/plate-loading-calculator.js",
      "types": "https://aifithub.io/engines/plate-loading-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "target_weight": {
            "type": "number"
          },
          "bar_weight": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "target_weight",
          "bar_weight"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "achievable": {
            "type": "boolean"
          },
          "loadedWeight": {
            "type": "number"
          },
          "platesPerSide": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "plate": {
                  "type": "number"
                },
                "count": {
                  "type": "number"
                }
              }
            }
          },
          "nearestWeight": {
            "type": [
              "number",
              "null"
            ]
          }
        }
      },
      "example": {
        "tool": "plate_loading_calculator",
        "target_weight": 100,
        "bar_weight": 20
      },
      "usage": "Client-side calculator. Open https://aifithub.io/plate-loading-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/plate-loading-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "progressive-overload-planner",
      "url": "https://aifithub.io/engines/progressive-overload-planner.js",
      "types": "https://aifithub.io/engines/progressive-overload-planner.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "current_lift_kg": {
            "type": "integer"
          },
          "weekly_increase_percent": {
            "type": "number"
          },
          "training_weeks": {
            "type": "integer"
          },
          "deload_every_weeks": {
            "type": "integer"
          },
          "deload_drop_percent": {
            "type": "integer"
          }
        },
        "required": [
          "tool",
          "current_lift_kg",
          "weekly_increase_percent",
          "training_weeks",
          "deload_every_weeks",
          "deload_drop_percent"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "primaryLabel": {
            "type": "string"
          },
          "primaryValue": {
            "type": "number"
          },
          "primaryFormat": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "format": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {}
          },
          "assumptionsEcho": {
            "type": "object",
            "properties": {
              "current_lift_kg": {
                "type": "number"
              },
              "weekly_increase_percent": {
                "type": "number"
              },
              "training_weeks": {
                "type": "number"
              },
              "deload_every_weeks": {
                "type": "number"
              },
              "deload_drop_percent": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "progressive_overload",
        "current_lift_kg": 100,
        "weekly_increase_percent": 1.5,
        "training_weeks": 16,
        "deload_every_weeks": 5,
        "deload_drop_percent": 8
      },
      "usage": null
    },
    {
      "slug": "protein-intake-calculator",
      "url": "https://aifithub.io/engines/protein-intake-calculator.js",
      "types": "https://aifithub.io/engines/protein-intake-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "activity_level": {
            "type": "string"
          },
          "goal": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "activity_level",
          "goal"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "minGrams": {
            "type": "number"
          },
          "maxGrams": {
            "type": "number"
          },
          "targetGrams": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "protein_intake_calculator",
        "weight_kg": 80,
        "activity_level": "active",
        "goal": "bulk"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/protein-intake-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/protein-intake-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "race-time-predictor",
      "url": "https://aifithub.io/engines/race-time-predictor.js",
      "types": "https://aifithub.io/engines/race-time-predictor.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "known_distance_km": {
            "type": "number"
          },
          "known_time_minutes": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "known_distance_km",
          "known_time_minutes"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "predictions": {
            "type": "array",
            "description": "Predicted finish times per target distance",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "distanceKm": {
                  "type": "number"
                },
                "timeMinutes": {
                  "type": "number"
                },
                "paceMinPerKm": {
                  "type": "number"
                },
                "paceMinPerMile": {
                  "type": "number"
                },
                "difficultyDelta": {
                  "type": "number",
                  "description": "Pace ratio vs baseline (1 = same effort, >1 = harder)"
                }
              }
            }
          },
          "baselinePaceMinPerKm": {
            "type": "number"
          },
          "baselinePaceMinPerMile": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "race_time_predictor",
        "known_distance_km": 10,
        "known_time_minutes": 50
      },
      "usage": "Client-side calculator. Open https://aifithub.io/race-time-predictor/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/race-time-predictor.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "race-week-taper",
      "url": "https://aifithub.io/engines/race-week-taper.js",
      "types": "https://aifithub.io/engines/race-week-taper.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "peak_volume": {
            "type": "number"
          },
          "peak_intensity": {
            "type": "number"
          },
          "taper_start_weeks_before": {
            "type": "number"
          },
          "race_distance": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "peak_volume",
          "peak_intensity",
          "taper_start_weeks_before",
          "race_distance"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "optimalVolumeCutPct": {
            "type": "number"
          },
          "intensityRetentionPct": {
            "type": "number"
          },
          "frequencyReductionPct": {
            "type": "number"
          },
          "raceDistance": {
            "type": "string"
          },
          "taperStartWeeksBefore": {
            "type": "number"
          },
          "weeklyPlan": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "race_week_taper",
        "peak_volume": 80,
        "peak_intensity": 3,
        "taper_start_weeks_before": 2,
        "race_distance": "marathon"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/race-week-taper/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/race-week-taper.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "resting-heart-rate-calculator",
      "url": "https://aifithub.io/engines/resting-heart-rate-calculator.js",
      "types": "https://aifithub.io/engines/resting-heart-rate-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "rhr": {
            "type": "number"
          },
          "age": {
            "type": "number"
          },
          "sex": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "rhr",
          "age",
          "sex"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "classification": {
            "type": "string"
          },
          "cardioAge": {
            "type": "number"
          },
          "targetRHR": {
            "type": "number"
          },
          "rhrReduction": {
            "type": "number"
          },
          "cardioAgeLabel": {
            "type": "string"
          },
          "fitnessMessage": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "resting_heart_rate",
        "rhr": 62,
        "age": 35,
        "sex": "male"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/resting-heart-rate-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/resting-heart-rate-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "rpe-to-percentage-converter",
      "url": "https://aifithub.io/engines/rpe-to-percentage-converter.js",
      "types": "https://aifithub.io/engines/rpe-to-percentage-converter.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "rpe": {
            "type": "number"
          },
          "reps": {
            "type": "number"
          },
          "one_rm": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "rpe",
          "reps"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "selectedPercentage": {
            "type": "number"
          },
          "estimatedWeight": {
            "type": [
              "number",
              "null"
            ]
          },
          "table": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "rpe_to_percentage",
        "rpe": 8,
        "reps": 5,
        "one_rm": 140
      },
      "usage": "Client-side calculator. Open https://aifithub.io/rpe-to-percentage-converter/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/rpe-to-percentage-converter.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "run-training-paces-calculator",
      "url": "https://aifithub.io/engines/run-training-paces-calculator.js",
      "types": "https://aifithub.io/engines/run-training-paces-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "distance": {
            "type": "string"
          },
          "race_time_minutes": {
            "type": "number"
          },
          "race_time_seconds": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "distance",
          "race_time_minutes",
          "race_time_seconds"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "vdot": {
            "type": "number",
            "description": "Effective aerobic fitness index (Daniels VDOT)"
          },
          "inputRaceDistanceMeters": {
            "type": "number"
          },
          "inputRaceTimeSeconds": {
            "type": "number"
          },
          "inputPacePerKmSeconds": {
            "type": "number"
          },
          "zones": {
            "type": "array",
            "description": "Training pace zones (E, M, T, I, R)",
            "items": {
              "type": "object",
              "properties": {
                "zone": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "pacePerKmSeconds": {
                  "type": "number"
                },
                "pacePerMileSeconds": {
                  "type": "number"
                },
                "effortPercent": {
                  "type": "number"
                }
              }
            }
          },
          "equivalentRaceTimes": {
            "type": "array",
            "description": "Predicted race times at equivalent fitness for standard distances",
            "items": {
              "type": "object",
              "properties": {
                "distance": {
                  "type": "string"
                },
                "distanceMeters": {
                  "type": "number"
                },
                "predictedSeconds": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "run_training_paces_calculator",
        "distance": "5k",
        "race_time_minutes": 25,
        "race_time_seconds": 0
      },
      "usage": "Client-side calculator. Open https://aifithub.io/run-training-paces-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/run-training-paces-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "running-pace-calculator",
      "url": "https://aifithub.io/engines/running-pace-calculator.js",
      "types": "https://aifithub.io/engines/running-pace-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "distance_km": {
            "type": "number"
          },
          "time_minutes": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "distance_km",
          "time_minutes"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "paceMinPerKm": {
            "type": "number"
          },
          "paceMinPerMile": {
            "type": "number"
          },
          "projectedRaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "distanceKm": {
                  "type": "number"
                },
                "timeMinutes": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "running_pace_calculator",
        "distance_km": 10,
        "time_minutes": 50
      },
      "usage": "Client-side calculator. Open https://aifithub.io/running-pace-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/running-pace-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "sleep-calculator",
      "url": "https://aifithub.io/engines/sleep-calculator.js",
      "types": "https://aifithub.io/engines/sleep-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "wake_time": {
            "type": "string"
          },
          "fall_asleep_minutes": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "wake_time",
          "fall_asleep_minutes"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "windows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "bedTime": {
                  "type": "object",
                  "properties": {
                    "hours": {
                      "type": "number"
                    },
                    "minutes": {
                      "type": "number"
                    }
                  }
                },
                "wakeTime": {
                  "type": "object",
                  "properties": {
                    "hours": {
                      "type": "number"
                    },
                    "minutes": {
                      "type": "number"
                    }
                  }
                },
                "cycles": {
                  "type": "number"
                },
                "sleepHours": {
                  "type": "number"
                },
                "rating": {
                  "type": "string"
                }
              }
            }
          },
          "fallAsleepMinutes": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "sleep_calculator",
        "wake_time": "06:30",
        "fall_asleep_minutes": 15
      },
      "usage": "Client-side calculator. Open https://aifithub.io/sleep-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/sleep-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "sleep-debt-calculator",
      "url": "https://aifithub.io/engines/sleep-debt-calculator.js",
      "types": "https://aifithub.io/engines/sleep-debt-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "ideal_sleep": {
            "type": "number"
          },
          "actual_sleep": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 7,
            "maxItems": 7
          }
        },
        "required": [
          "tool",
          "ideal_sleep",
          "actual_sleep"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "totalDebt": {
            "type": "number"
          },
          "averageSleep": {
            "type": "number"
          },
          "days": {
            "type": "array"
          },
          "assessment": {
            "type": "string",
            "enum": [
              "Good",
              "Moderate Debt",
              "Significant Debt",
              "Severe Debt"
            ]
          },
          "estimatedRecoveryDays": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "sleep_debt",
        "ideal_sleep": 8,
        "actual_sleep": [
          7,
          6.5,
          7,
          6,
          5.5,
          8,
          8.5
        ]
      },
      "usage": "Client-side calculator. Open https://aifithub.io/sleep-debt-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/sleep-debt-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "smolov-sheiko-texas-cycles",
      "url": "https://aifithub.io/engines/smolov-sheiko-texas-cycles.js",
      "types": "https://aifithub.io/engines/smolov-sheiko-texas-cycles.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "one_rm": {
            "type": "number"
          },
          "cycle_choice": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "one_rm",
          "cycle_choice"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "cycle": {
            "type": "string"
          },
          "cycleName": {
            "type": "string"
          },
          "oneRm": {
            "type": "number"
          },
          "weeklyVolumeReps": {
            "type": "number"
          },
          "totalWeeks": {
            "type": "number"
          },
          "weeks": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "smolov_sheiko_texas_cycles",
        "one_rm": 150,
        "cycle_choice": "smolov_base"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/smolov-sheiko-texas-cycles/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/smolov-sheiko-texas-cycles.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "strength-percentile-calculator",
      "url": "https://aifithub.io/engines/strength-percentile-calculator.js",
      "types": "https://aifithub.io/engines/strength-percentile-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ]
          },
          "body_weight_kg": {
            "type": "number"
          },
          "lift": {
            "type": "string",
            "enum": [
              "squat",
              "bench",
              "deadlift",
              "ohp"
            ]
          },
          "weight_lifted": {
            "type": "number"
          },
          "reps": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "sex",
          "body_weight_kg",
          "lift",
          "weight_lifted",
          "reps"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "estimated1Rm": {
            "type": "number"
          },
          "bwRatio": {
            "type": "number"
          },
          "level": {
            "type": "string",
            "enum": [
              "Untrained",
              "Novice",
              "Intermediate",
              "Advanced",
              "Elite"
            ]
          },
          "percentile": {
            "type": "number"
          },
          "bodyweightKg": {
            "type": "number"
          },
          "lift": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "strength_percentile",
        "sex": "male",
        "body_weight_kg": 80,
        "lift": "squat",
        "weight_lifted": 140,
        "reps": 1
      },
      "usage": "Client-side calculator. Open https://aifithub.io/strength-percentile-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/strength-percentile-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "strength-standards-calculator",
      "url": "https://aifithub.io/engines/strength-standards-calculator.js",
      "types": "https://aifithub.io/engines/strength-standards-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "body_weight_kg": {
            "type": "number"
          },
          "sex": {
            "type": "string"
          },
          "bench_kg": {
            "type": "number"
          },
          "squat_kg": {
            "type": "number"
          },
          "deadlift_kg": {
            "type": "number"
          },
          "ohp_kg": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "body_weight_kg",
          "sex",
          "bench_kg",
          "squat_kg",
          "deadlift_kg",
          "ohp_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "lifts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "lift": {
                  "type": "string"
                },
                "liftedKg": {
                  "type": "number"
                },
                "ratio": {
                  "type": "number"
                },
                "level": {
                  "type": "string"
                },
                "percentile": {
                  "type": "number"
                },
                "nextLevel": {
                  "type": "string"
                },
                "nextLevelKg": {
                  "type": "number"
                }
              }
            }
          },
          "overallLevel": {
            "type": "string"
          },
          "overallPercentile": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "strength_standards",
        "body_weight_kg": 80,
        "sex": "male",
        "bench_kg": 80,
        "squat_kg": 120,
        "deadlift_kg": 140,
        "ohp_kg": 50
      },
      "usage": "Client-side calculator. Open https://aifithub.io/strength-standards-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/strength-standards-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "sweat-rate-calculator",
      "url": "https://aifithub.io/engines/sweat-rate-calculator.js",
      "types": "https://aifithub.io/engines/sweat-rate-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "pre_weight_kg": {
            "type": "number"
          },
          "post_weight_kg": {
            "type": "number"
          },
          "duration_minutes": {
            "type": "number"
          },
          "fluid_consumed_ml": {
            "type": "number"
          },
          "urine_produced_ml": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "pre_weight_kg",
          "post_weight_kg",
          "duration_minutes",
          "fluid_consumed_ml",
          "urine_produced_ml"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "sweatRateLPerHr": {
            "type": "number",
            "description": "Sweat rate in litres per hour"
          },
          "totalFluidLostL": {
            "type": "number",
            "description": "Total fluid lost during exercise in litres"
          },
          "weightLostKg": {
            "type": "number",
            "description": "Body weight lost during exercise in kg"
          },
          "weightLostPercent": {
            "type": "number",
            "description": "Body weight lost as a percentage of pre-exercise weight"
          },
          "hydrationStatus": {
            "type": "string",
            "enum": [
              "well_hydrated",
              "mild_dehydration",
              "moderate_dehydration",
              "severe_dehydration"
            ],
            "description": "Hydration classification based on ACSM body weight loss thresholds"
          },
          "hydrationLabel": {
            "type": "string",
            "description": "Human-readable hydration classification label"
          },
          "fluidReplacePerHourMl": {
            "type": "number",
            "description": "Recommended fluid intake per hour for next session in mL (80% of sweat rate)"
          },
          "sodiumLossMgPerHr": {
            "type": "number",
            "description": "Estimated sodium loss per hour in mg (based on GSSI median of 920 mg/L)"
          },
          "recommendation": {
            "type": "string",
            "description": "Hydration recommendation based on dehydration level"
          }
        }
      },
      "example": {
        "tool": "sweat_rate_calculator",
        "pre_weight_kg": 70,
        "post_weight_kg": 69.2,
        "duration_minutes": 60,
        "fluid_consumed_ml": 500,
        "urine_produced_ml": 0
      },
      "usage": "Client-side calculator. Open https://aifithub.io/sweat-rate-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/sweat-rate-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "sweat-rate-electrolyte-marathon",
      "url": "https://aifithub.io/engines/sweat-rate-electrolyte-marathon.js",
      "types": "https://aifithub.io/engines/sweat-rate-electrolyte-marathon.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "pre_weight_kg": {
            "type": "number"
          },
          "post_weight_kg": {
            "type": "number"
          },
          "fluid_consumed_ml": {
            "type": "number"
          },
          "duration_minutes": {
            "type": "number"
          },
          "climate": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "pre_weight_kg",
          "post_weight_kg",
          "fluid_consumed_ml",
          "duration_minutes",
          "climate"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "fluidIntakePerHourMl": {
            "type": "number"
          },
          "sodiumPerHourMg": {
            "type": "number"
          },
          "sweatRateLPerHour": {
            "type": "number"
          },
          "totalSweatLossL": {
            "type": "number"
          },
          "bodyMassLossPct": {
            "type": "number"
          },
          "riskFlag": {
            "type": "string",
            "enum": [
              "ok",
              "watch",
              "danger"
            ]
          },
          "preRacePlanMl": {
            "type": "number"
          },
          "postRacePlanMl": {
            "type": "number"
          },
          "notes": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "sweat_rate_electrolyte_marathon",
        "pre_weight_kg": 70,
        "post_weight_kg": 68.5,
        "fluid_consumed_ml": 800,
        "duration_minutes": 240,
        "climate": "temp"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/sweat-rate-electrolyte-marathon/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/sweat-rate-electrolyte-marathon.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "swim-pace-calculator",
      "url": "https://aifithub.io/engines/swim-pace-calculator.js",
      "types": "https://aifithub.io/engines/swim-pace-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "stroke_type": {
            "type": "string"
          },
          "distance_value": {
            "type": "number"
          },
          "distance_unit": {
            "type": "string"
          },
          "laps": {
            "type": "number"
          },
          "pool_length": {
            "type": "number"
          },
          "pool_length_unit": {
            "type": "string"
          },
          "time_seconds": {
            "type": "number"
          },
          "target_pace_seconds": {
            "type": "number"
          },
          "target_pace_unit": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "mode",
          "stroke_type",
          "distance_unit",
          "pool_length_unit",
          "target_pace_unit"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "distanceMeters": {
            "type": "number"
          },
          "distanceYards": {
            "type": "number"
          },
          "totalTimeSeconds": {
            "type": "number"
          },
          "pacePer100mSeconds": {
            "type": "number"
          },
          "pacePer100ydSeconds": {
            "type": "number"
          },
          "swolfEstimate": {
            "type": "number"
          },
          "effortZone": {
            "type": "string"
          },
          "strokeType": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "swim_pace_calculator",
        "mode": "pace",
        "stroke_type": "freestyle",
        "distance_value": 1500,
        "distance_unit": "m",
        "laps": 0,
        "pool_length": 25,
        "pool_length_unit": "m",
        "time_seconds": 1800,
        "target_pace_seconds": 120,
        "target_pace_unit": "100m"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/swim-pace-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/swim-pace-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "tdee-calculator",
      "url": "https://aifithub.io/engines/tdee-calculator.js",
      "types": "https://aifithub.io/engines/tdee-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "sex": {
            "type": "string"
          },
          "age": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          },
          "height_cm": {
            "type": "number"
          },
          "activity_level": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "sex",
          "age",
          "weight_kg",
          "height_cm",
          "activity_level"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "bmr": {
            "type": "number"
          },
          "tdee": {
            "type": "number"
          },
          "activityFactor": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "tdee_calculator",
        "sex": "male",
        "age": 30,
        "weight_kg": 80,
        "height_cm": 178,
        "activity_level": "moderate"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/tdee-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/tdee-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "treadmill-pace-converter",
      "url": "https://aifithub.io/engines/treadmill-pace-converter.js",
      "types": "https://aifithub.io/engines/treadmill-pace-converter.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "speed_kph": {
            "type": "number"
          },
          "incline_pct": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          },
          "duration_minutes": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "speed_kph",
          "incline_pct",
          "weight_kg"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "speedKph": {
            "type": "number"
          },
          "speedMph": {
            "type": "number"
          },
          "paceMinPerKm": {
            "type": "number"
          },
          "paceMinPerMile": {
            "type": "number"
          },
          "adjustedPaceMinPerKm": {
            "type": "number",
            "description": "Incline-adjusted equivalent flat pace per km"
          },
          "adjustedPaceMinPerMile": {
            "type": "number"
          },
          "adjustedSpeedKph": {
            "type": "number"
          },
          "caloriesPerHour": {
            "type": "number"
          },
          "caloriesTotal": {
            "type": [
              "number",
              "null"
            ]
          },
          "durationMinutes": {
            "type": [
              "number",
              "null"
            ]
          },
          "distanceKm": {
            "type": [
              "number",
              "null"
            ]
          },
          "projectedRaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "distanceKm": {
                  "type": "number"
                },
                "timeMinutes": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "treadmill_pace_converter",
        "speed_kph": 10,
        "incline_pct": 1,
        "weight_kg": 75,
        "duration_minutes": 30
      },
      "usage": "Client-side calculator. Open https://aifithub.io/treadmill-pace-converter/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/treadmill-pace-converter.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "velocity-based-1rm",
      "url": "https://aifithub.io/engines/velocity-based-1rm.js",
      "types": "https://aifithub.io/engines/velocity-based-1rm.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "bar_speed_m_per_s": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          },
          "lift_type": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "bar_speed_m_per_s",
          "weight_kg",
          "lift_type"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "estimated1Rm": {
            "type": "number"
          },
          "predictedPctOf1Rm": {
            "type": "number"
          },
          "ci95Low": {
            "type": "number"
          },
          "ci95High": {
            "type": "number"
          },
          "recommendedZone": {
            "type": "string"
          },
          "velocityZones": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "velocity_based_1rm",
        "bar_speed_m_per_s": 0.5,
        "weight_kg": 100,
        "lift_type": "squat"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/velocity-based-1rm/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/velocity-based-1rm.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "vo2-max-estimator",
      "url": "https://aifithub.io/engines/vo2-max-estimator.js",
      "types": "https://aifithub.io/engines/vo2-max-estimator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "distance_meters": {
            "type": "number"
          },
          "weight_kg": {
            "type": "number"
          },
          "age": {
            "type": "number"
          },
          "sex": {
            "type": "string"
          },
          "walk_time_minutes": {
            "type": "number"
          },
          "heart_rate_after": {
            "type": "number"
          },
          "activity_level": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "method",
          "distance_meters",
          "weight_kg",
          "age",
          "sex",
          "walk_time_minutes",
          "heart_rate_after",
          "activity_level"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "vo2max": {
            "type": "number"
          },
          "classification": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "color": {
                "type": "string"
              }
            }
          },
          "fitnessAge": {
            "type": "number"
          },
          "methodName": {
            "type": "string"
          },
          "formula": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "vo2_max_estimator",
        "method": "questionnaire",
        "distance_meters": 2400,
        "weight_kg": 75,
        "age": 30,
        "sex": "male",
        "walk_time_minutes": 15,
        "heart_rate_after": 140,
        "activity_level": "moderate"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/vo2-max-estimator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/vo2-max-estimator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "waist-to-hip-ratio-calculator",
      "url": "https://aifithub.io/engines/waist-to-hip-ratio-calculator.js",
      "types": "https://aifithub.io/engines/waist-to-hip-ratio-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "waist_cm": {
            "type": "number"
          },
          "hip_cm": {
            "type": "number"
          },
          "sex": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "waist_cm",
          "hip_cm",
          "sex"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ratio": {
            "type": "number"
          },
          "riskCategory": {
            "type": "string"
          },
          "riskDescription": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "waist_to_hip_ratio_calculator",
        "waist_cm": 85,
        "hip_cm": 100,
        "sex": "male"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/waist-to-hip-ratio-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/waist-to-hip-ratio-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "walking-calorie-calculator",
      "url": "https://aifithub.io/engines/walking-calorie-calculator.js",
      "types": "https://aifithub.io/engines/walking-calorie-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "speed": {
            "type": "string"
          },
          "duration_minutes": {
            "type": "number"
          },
          "incline": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "speed",
          "duration_minutes",
          "incline"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "calories": {
            "type": "number"
          },
          "caloriesPerMinute": {
            "type": "number"
          },
          "met": {
            "type": "number"
          },
          "inclineMultiplier": {
            "type": "number"
          },
          "durationHours": {
            "type": "number"
          },
          "foodEquivalents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "caloriesPerItem": {
                  "type": "number"
                },
                "equivalentCount": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "walking_calorie_calculator",
        "weight_kg": 78,
        "speed": "brisk",
        "duration_minutes": 45,
        "incline": "slight"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/walking-calorie-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/walking-calorie-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "water-intake-calculator",
      "url": "https://aifithub.io/engines/water-intake-calculator.js",
      "types": "https://aifithub.io/engines/water-intake-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "weight_kg": {
            "type": "number"
          },
          "activity_level": {
            "type": "string"
          },
          "climate": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "weight_kg",
          "activity_level",
          "climate"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "litersPerDay": {
            "type": "number"
          },
          "glassesPerDay": {
            "type": "number"
          },
          "breakdown": {
            "type": "object",
            "properties": {
              "baseIntake": {
                "type": "number"
              },
              "activityMultiplier": {
                "type": "number"
              },
              "climateMultiplier": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "water_intake_calculator",
        "weight_kg": 80,
        "activity_level": "moderate",
        "climate": "temperate"
      },
      "usage": "Client-side calculator. Open https://aifithub.io/water-intake-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/water-intake-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "wendler-531-planner",
      "url": "https://aifithub.io/engines/wendler-531-planner.js",
      "types": "https://aifithub.io/engines/wendler-531-planner.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "squat_1rm": {
            "type": "number"
          },
          "bench_1rm": {
            "type": "number"
          },
          "deadlift_1rm": {
            "type": "number"
          },
          "ohp_1rm": {
            "type": "number"
          },
          "training_max_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "squat_1rm",
          "bench_1rm",
          "deadlift_1rm",
          "ohp_1rm",
          "training_max_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "trainingMaxPct": {
            "type": "number"
          },
          "primaryLift": {
            "type": "string",
            "enum": [
              "squat",
              "bench",
              "deadlift",
              "ohp"
            ]
          },
          "primaryTrainingMax": {
            "type": "number"
          },
          "lifts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "lift": {
                  "type": "string"
                },
                "oneRm": {
                  "type": "number"
                },
                "trainingMax": {
                  "type": "number"
                },
                "weeks": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "week": {
                        "type": "number"
                      },
                      "label": {
                        "type": "string"
                      },
                      "sets": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "reps": {
                              "type": "string"
                            },
                            "percent": {
                              "type": "number"
                            },
                            "weightKg": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "wendler_531_planner",
        "squat_1rm": 140,
        "bench_1rm": 100,
        "deadlift_1rm": 180,
        "ohp_1rm": 60,
        "training_max_pct": 90
      },
      "usage": "Client-side calculator. Open https://aifithub.io/wendler-531-planner/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/wendler-531-planner.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "workout-volume-calculator",
      "url": "https://aifithub.io/engines/workout-volume-calculator.js",
      "types": "https://aifithub.io/engines/workout-volume-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "exercises": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "tool",
          "exercises"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "exercises": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "muscleGroup": {
                  "type": "string"
                },
                "sets": {
                  "type": "number"
                },
                "reps": {
                  "type": "number"
                },
                "weightKg": {
                  "type": "number"
                },
                "volumeLoad": {
                  "type": "number"
                }
              }
            }
          },
          "muscleGroups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "muscleGroup": {
                  "type": "string"
                },
                "totalSets": {
                  "type": "number"
                },
                "totalVolumeLoad": {
                  "type": "number"
                },
                "optimalMin": {
                  "type": "number"
                },
                "optimalMax": {
                  "type": "number"
                },
                "status": {
                  "type": "string"
                }
              }
            }
          },
          "totalVolumeLoad": {
            "type": "number"
          },
          "totalSets": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "workout_volume",
        "exercises": [
          {
            "name": "Bench Press",
            "muscle_group": "chest",
            "sets": 4,
            "reps": 8,
            "weight": 185
          },
          {
            "name": "Incline DB Press",
            "muscle_group": "chest",
            "sets": 3,
            "reps": 10,
            "weight": 60
          },
          {
            "name": "Cable Fly",
            "muscle_group": "chest",
            "sets": 3,
            "reps": 12,
            "weight": 30
          }
        ]
      },
      "usage": "Client-side calculator. Open https://aifithub.io/workout-volume-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/workout-volume-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "zone-2-heart-rate-calculator",
      "url": "https://aifithub.io/engines/zone-2-heart-rate-calculator.js",
      "types": "https://aifithub.io/engines/zone-2-heart-rate-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "age": {
            "type": "number"
          },
          "resting_hr": {
            "type": "number"
          },
          "max_hr": {
            "type": "number"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "maffetone",
                "percentage",
                "karvonen",
                "lactate"
              ]
            }
          }
        },
        "required": [
          "tool",
          "age"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "methods": {
            "type": "array"
          },
          "estimatedMaxHrTraditional": {
            "type": "number"
          },
          "estimatedMaxHrTanaka": {
            "type": "number"
          },
          "hasRhr": {
            "type": "boolean"
          },
          "hasCustomMaxHr": {
            "type": "boolean"
          }
        }
      },
      "example": {
        "tool": "zone_2_heart_rate",
        "age": 35,
        "resting_hr": 62,
        "methods": [
          "maffetone",
          "percentage",
          "karvonen",
          "lactate"
        ]
      },
      "usage": "Client-side calculator. Open https://aifithub.io/zone-2-heart-rate-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifithub.io/engines/zone-2-heart-rate-calculator.js — call compute(input) with the JSON shape below."
    }
  ]
}
