Overview
BMI Calculator uses the Mifflin-St Jeor equation for accurate BMR calculations and evidence-based activity multipliers for TDEE. It provides actionable data for fitness apps, health trackers, and nutrition planning tools.
Live Test BMI & Fitness Metrics Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as BMIFitnessMetricsSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "BMIFitnessMetricsSkill",
"arguments": {
"weight": "180",
"height": "70",
"unit": "imperial"
}
}You do not name the tool yourself; the model picks it. Asking about 180 in the terms this skill covers is enough for it to reach for BMIFitnessMetricsSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
weightRequired | number | Weight in kg (metric) or lbs (imperial) range 1–∞ |
heightRequired | number | Height in cm (metric) or inches (imperial) range 1–∞ |
unitRequired | string | Unit system for weight and heightmetricimperial |
ageOptional | number | Age in years (required for BMR/TDEE calculations) range 1–120 |
genderOptional | string | Gender (required for BMR/TDEE calculations)malefemale |
activityLevelOptional | string | Activity level (required for TDEE/calorie calculations)sedentarylightmoderateactiveveryactive |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"height": "70 inches",
"weight": "180 lbs",
"bmi": 25.83,
"bmiPrime": 1.033,
"category": "Overweight",
"risk": "Increased risk",
"summary": "BMI is above the healthy range. Lifestyle changes may be beneficial.",
"idealWeightRange": {
"min": 129,
"max": 173.5,
"unit": "lbs"
},
"weightToChange": {
"direction": "lose",
"amount": 6.5,
"unit": "lbs"
},
"bmr": 1783,
"tdee": 2763,
"calorieTargets": {
"extremeDeficit": 1763,
"moderateDeficit": 2263,
"maintain": 2763,
"moderateSurplus": 3063,
"bulkSurplus": 3263
},
"macros": {
"lose": {
"protein": 198,
"carbs": 198,
"fat": 75
},
"maintain": {
"protein": 207,
"carbs": 276,
"fat": 92
},
"gain": {
"protein": 230,
"carbs": 345,
"fat": 85
}
}
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
height | string | 70 inches | Formatted height with unit |
weight | string | 180 lbs | Formatted weight with unit |
bmi | number | 25.83 | Calculated Body Mass Index |
bmiPrimePremium | number | 1.033 | Ratio of BMI to upper normal limit (25). Values <1 are normal weight. |
category | string | Overweight | BMI category (Underweight, Normal, Overweight, Obese Class I/II/III) |
riskPremium | string | Increased risk | Health risk level based on BMI category |
summaryPremium | string | BMI is above the healthy range. Lifestyle changes may be beneficial. | Brief interpretation of BMI results |
idealWeightRange | object | {…} | Healthy weight range for this height (min, max, unit) |
idealWeightRange.min | number | 129 | Lowest weight in the healthy BMI range |
idealWeightRange.max | number | 173.5 | Highest weight in the healthy BMI range |
idealWeightRange.unit | string | lbs | Unit the ideal weight range is expressed in (lbs or kg) |
weightToChangePremium | object | {…} | Weight to lose or gain to reach normal BMI (direction, amount, unit) |
weightToChange.directionPremium | string | lose | Whether weight needs to be lost, gained, or maintained |
weightToChange.amountPremium | number | 6.5 | How much weight to lose or gain to reach the healthy range |
weightToChange.unitPremium | string | lbs | Unit the weight change is expressed in (lbs or kg) |
bmrPremium | number | 1783 | Basal Metabolic Rate - calories burned at rest (requires age, gender) |
tdeePremium | number | 2763 | Total Daily Energy Expenditure - calories burned per day (requires age, gender, activityLevel) |
calorieTargetsPremium | object | {…} | Daily calorie targets for different goals (extremeDeficit, moderateDeficit, maintain, moderateSurplus, bulkSurplus) |
calorieTargets.extremeDeficitPremium | number | 1763 | Daily calories for aggressive weight loss, roughly 1000 below maintenance |
calorieTargets.moderateDeficitPremium | number | 2263 | Daily calories for steady weight loss, roughly 500 below maintenance |
calorieTargets.maintainPremium | number | 2763 | Daily calories to hold current weight, equal to total daily energy expenditure |
calorieTargets.moderateSurplusPremium | number | 3063 | Daily calories for lean weight gain, roughly 300 above maintenance |
calorieTargets.bulkSurplusPremium | number | 3263 | Daily calories for faster weight gain, roughly 500 above maintenance |
macrosPremium | object | {…} | Macronutrient targets in grams (protein, carbs, fat) for lose/maintain/gain goals |
macros.losePremium | object | {…} | Daily macronutrient grams for the weight loss calorie target |
macros.lose.proteinPremium | number | 198 | Grams of protein per day while losing weight |
macros.lose.carbsPremium | number | 198 | Grams of carbohydrate per day while losing weight |
macros.lose.fatPremium | number | 75 | Grams of fat per day while losing weight |
macros.maintainPremium | object | {…} | Daily macronutrient grams for the maintenance calorie target |
macros.maintain.proteinPremium | number | 207 | Grams of protein per day at maintenance |
macros.maintain.carbsPremium | number | 276 | Grams of carbohydrate per day at maintenance |
macros.maintain.fatPremium | number | 92 | Grams of fat per day at maintenance |
macros.gainPremium | object | {…} | Daily macronutrient grams for the weight gain calorie target |
macros.gain.proteinPremium | number | 230 | Grams of protein per day while gaining weight |
macros.gain.carbsPremium | number | 345 | Grams of carbohydrate per day while gaining weight |
macros.gain.fatPremium | number | 85 | Grams of fat per day while gaining weight |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Fitness Apps
- Calculate BMI, BMR, TDEE and macro targets for users tracking their fitness journey.
- Health Tracking
- Provide users with their ideal weight range and how much to gain or lose to reach a healthy BMI.
- Nutrition Planning
- Generate personalized calorie and macronutrient targets for meal planning applications.
- Weight Loss Programs
- Calculate calorie deficits and protein targets for weight loss applications.
Other ways to use BMI & Fitness Metrics Skill
Set up BMI & Fitness Metrics Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Health/Wellness: