Bodywise Fitness and Nutrition
Public fitness and nutrition calculators, exercise information, and evidence-based guides.
Should I use this
Quality & Safety
Findings (11)
- LOWin maintenance_calories
- LOWin daily_protein_range
- LOWin lift_balance_calculator
- LOWin dots_wilks_calculator
- LOWin ipf_gl_points_calculator
- LOWin strength_to_bodyweight_calculator
- LOWin lean_bulking_rate_calculator
- LOWin rest_between_sets_calculator
- LOWin get_calculator_info
- LOWin protein_distribution_calculator
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp": {
"url": "https://bodywise.io/api/mcp"
}
}
}Remote endpoints
https://bodywise.io/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (35)
๐ขmaintenance_calories(sex, age, height_cm, weight_kg, activity)
Estimate daily maintenance calories (Mifflin-St Jeor ร activity multiplier) for an adult.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"age": {
"type": "number",
"minimum": 18,
"maximum": 90,
"description": "Age in years (18โ90)."
},
"height_cm": {
"type": "number",
"minimum": 140,
"maximum": 215,
"description": "Height in cm."
},
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
},
"activity": {
"type": "number",
"minimum": 1.2,
"maximum": 1.9,
"description": "Activity multiplier: 1.2, 1.375, 1.55, 1.725 or 1.9."
}
},
"required": [
"sex",
"age",
"height_cm",
"weight_kg",
"activity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขbulking_calories(sex, age, height_cm, weight_kg, activity)
Maintenance calories plus the 10โ15% lean-gain starting surplus and a weekly gain guide (the Bodywise bulking calorie calculator).
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"age": {
"type": "number",
"minimum": 18,
"maximum": 90,
"description": "Age in years (18โ90)."
},
"height_cm": {
"type": "number",
"minimum": 120,
"maximum": 220,
"description": "Height in cm."
},
"weight_kg": {
"type": "number",
"minimum": 30,
"maximum": 250,
"description": "Bodyweight in kg."
},
"activity": {
"type": "number",
"minimum": 1.2,
"maximum": 1.9,
"description": "Activity multiplier: 1.2, 1.375, 1.55, 1.725 or 1.9."
}
},
"required": [
"sex",
"age",
"height_cm",
"weight_kg",
"activity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขcalorie_calculator(age, sex, height_cm, weight_kg, activity_level, ...)
Older calculator kept for backwards compatibility: maintenance (Mifflin-St Jeor ร named activity level) times 0.80, 0.85, 1.00 or 1.10 by goal. It has no Bodywise page. For the bulking calorie calculator page (+10โ15% range) call bulking_calories; for the macro calculator page (โ400/0/+300 kcal plus protein, fat and carbs) call macro_calculator; for maintenance only call maintenance_calories.
Input Schema
{
"type": "object",
"properties": {
"age": {
"type": "number",
"minimum": 18,
"maximum": 90,
"description": "Age in years (18โ90)."
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"height_cm": {
"type": "number",
"minimum": 140,
"maximum": 215,
"description": "Height in cm."
},
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
},
"activity_level": {
"type": "string",
"enum": [
"sedentary",
"light",
"moderate",
"active",
"very_active"
],
"description": "Typical activity level."
},
"goal": {
"type": "string",
"enum": [
"fat_loss_aggressive",
"fat_loss_moderate",
"maintenance",
"lean_gain"
],
"description": "Goal: -20%, -15%, 0% or +10% of maintenance."
}
},
"required": [
"age",
"sex",
"height_cm",
"weight_kg",
"activity_level",
"goal"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขdaily_protein_range(weight_kg, meals_per_day)
Daily protein of 1.6โ2.2 g per kg bodyweight and the per-meal split (the public Bodywise protein calculator page, /hub/protein-calculator). Prefer this over protein_calculator when matching the website.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 30,
"maximum": 250,
"description": "Bodyweight in kg."
},
"meals_per_day": {
"default": 4,
"description": "Meals per day (2โ6, default 4).",
"type": "integer",
"minimum": 2,
"maximum": 6
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขprotein_calculator(weight_kg, goal, lean_mass_kg)
Older goal-based daily protein range (fat_loss, hypertrophy, maintenance, endurance; optional lean mass), kept for backwards compatibility. It has no Bodywise page and can give different figures from the public protein calculator โ for the /hub/protein-calculator page (1.6โ2.2 g/kg) call daily_protein_range instead.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
},
"goal": {
"default": "hypertrophy",
"description": "Goal: fat_loss, hypertrophy, maintenance or endurance.",
"type": "string",
"enum": [
"fat_loss",
"hypertrophy",
"maintenance",
"endurance"
]
},
"lean_mass_kg": {
"description": "Optional fat-free mass in kg; used for hypertrophy and fat_loss.",
"type": "number",
"minimum": 20,
"maximum": 180
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขmacro_calculator(sex, age, height_cm, weight_kg, activity, ...)
The public Bodywise macro calculator page (/macro-calculator): maintenance calories (Mifflin-St Jeor ร activity multiplier), a goal target (build +300 kcal, maintain 0, lean โ400; never below 1,200 kcal) and daily protein, fat and carb grams. No email is needed or accepted.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"age": {
"type": "number",
"minimum": 18,
"maximum": 90,
"description": "Age in years (18โ90)."
},
"height_cm": {
"type": "number",
"minimum": 120,
"maximum": 220,
"description": "Height in cm."
},
"weight_kg": {
"type": "number",
"minimum": 30,
"maximum": 250,
"description": "Bodyweight in kg."
},
"activity": {
"type": "number",
"minimum": 1.2,
"maximum": 1.9,
"description": "Activity multiplier: 1.2, 1.375, 1.55, 1.725 or 1.9."
},
"goal": {
"type": "string",
"enum": [
"build",
"maintain",
"lean"
],
"description": "build (build muscle), maintain (stay the same weight) or lean (lose fat, keep muscle)."
}
},
"required": [
"sex",
"age",
"height_cm",
"weight_kg",
"activity",
"goal"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขprotein_distribution_calculator(weight_kg, daily_protein_target_g, meals_per_day)
Split a daily protein target across meals and compare each meal with 0.4 g per kg of bodyweight.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
},
"daily_protein_target_g": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Daily protein target in grams."
},
"meals_per_day": {
"default": 4,
"description": "Meals per day (3โ6, default 4).",
"type": "integer",
"minimum": 3,
"maximum": 6
}
},
"required": [
"weight_kg",
"daily_protein_target_g"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขone_rep_max(weight_kg, reps, rir)
Estimate a 1RM (Epley, counting reps in reserve) and working weights from a completed set.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 5,
"maximum": 250,
"description": "Weight lifted in kg."
},
"reps": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Repetitions completed."
},
"rir": {
"type": "integer",
"minimum": 0,
"maximum": 4,
"description": "Reps in reserve (0โ4)."
}
},
"required": [
"weight_kg",
"reps",
"rir"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขrpe_rir_calculator(estimated_1rm_kg, known_weight_kg, reps_performed, rir, target_reps, ...)
Working weight for a target number of reps at a target RPE or reps in reserve (Epley model).
Input Schema
{
"type": "object",
"properties": {
"estimated_1rm_kg": {
"description": "Known or estimated 1RM in kg. Or give known_weight_kg + reps_performed.",
"type": "number",
"minimum": 5,
"maximum": 400
},
"known_weight_kg": {
"description": "Weight of a completed set in kg.",
"type": "number",
"minimum": 5,
"maximum": 400
},
"reps_performed": {
"description": "Reps completed in that set.",
"type": "integer",
"minimum": 1,
"maximum": 12
},
"rir": {
"description": "Reps in reserve on that set (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 4
},
"target_reps": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Target reps."
},
"target_rir": {
"default": 2,
"description": "Target reps in reserve (default 2, i.e. RPE 8).",
"type": "integer",
"minimum": 0,
"maximum": 4
}
},
"required": [
"target_reps"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขfat_free_mass_index(height_cm, weight_kg, body_fat_percent)
Calculate fat-free mass, FFMI and height-normalised FFMI (Kouri et al., 1995).
Input Schema
{
"type": "object",
"properties": {
"height_cm": {
"type": "number",
"minimum": 140,
"maximum": 215,
"description": "Height in cm."
},
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
},
"body_fat_percent": {
"type": "number",
"minimum": 3,
"maximum": 50,
"description": "Body fat percentage."
}
},
"required": [
"height_cm",
"weight_kg",
"body_fat_percent"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขfat_loss_timeline_calculator(current_weight_kg, current_body_fat_pct, target_body_fat_pct, rate_of_loss_pct_per_week)
Projected weeks and daily deficit to reach a target body-fat percentage, assuming all loss is fat (~7,700 kcal/kg).
Input Schema
{
"type": "object",
"properties": {
"current_weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 250,
"description": "Current bodyweight in kg."
},
"current_body_fat_pct": {
"type": "number",
"minimum": 6,
"maximum": 60,
"description": "Current body fat %."
},
"target_body_fat_pct": {
"type": "number",
"minimum": 5,
"maximum": 59,
"description": "Target body fat %, below the current figure."
},
"rate_of_loss_pct_per_week": {
"default": 0.75,
"description": "Weekly loss as % of bodyweight (0.5โ1, default 0.75).",
"type": "number",
"minimum": 0.5,
"maximum": 1
}
},
"required": [
"current_weight_kg",
"current_body_fat_pct",
"target_body_fat_pct"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขlift_balance_calculator(bench_press_kg, squat_kg, deadlift_kg, overhead_press_kg)
Squat, deadlift and overhead press as percentages of bench press. Descriptive only.
Input Schema
{
"type": "object",
"properties": {
"bench_press_kg": {
"type": "number",
"minimum": 10,
"maximum": 400,
"description": "Bench press in kg."
},
"squat_kg": {
"description": "Squat in kg.",
"type": "number",
"minimum": 10,
"maximum": 500
},
"deadlift_kg": {
"description": "Deadlift in kg.",
"type": "number",
"minimum": 10,
"maximum": 500
},
"overhead_press_kg": {
"description": "Overhead press in kg.",
"type": "number",
"minimum": 5,
"maximum": 300
}
},
"required": [
"bench_press_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขdots_wilks_calculator(weight_kg, sex, total_lifted_kg)
DOTS (IPF 2019) and original Wilks scores for a powerlifting total at a given bodyweight.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 210,
"description": "Bodyweight in kg."
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"total_lifted_kg": {
"type": "number",
"minimum": 20,
"maximum": 1500,
"description": "Squat + bench + deadlift total in kg."
}
},
"required": [
"weight_kg",
"sex",
"total_lifted_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขcreatine_dosing_calculator(weight_kg)
Creatine monohydrate maintenance (3โ5 g/day) and optional loading dose (~0.3 g/kg/day for 5โ7 days).
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 40,
"maximum": 180,
"description": "Bodyweight in kg."
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขipf_gl_points_calculator(weight_kg, sex, total_lifted_kg)
IPF GL points (IPF 2020 classic three-lift coefficients) for a squat + bench + deadlift total at a given bodyweight.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 35,
"maximum": 250,
"description": "Bodyweight in kg."
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sex assigned at birth."
},
"total_lifted_kg": {
"type": "number",
"minimum": 20,
"maximum": 1500,
"description": "Squat + bench + deadlift total in kg."
}
},
"required": [
"weight_kg",
"sex",
"total_lifted_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขstrength_to_bodyweight_calculator(weight_kg, squat_kg, bench_press_kg, deadlift_kg, overhead_press_kg)
Each lift as a plain multiple of bodyweight. Descriptive only; it never labels a lifter's level.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 35,
"maximum": 250,
"description": "Bodyweight in kg."
},
"squat_kg": {
"description": "Squat in kg.",
"type": "number",
"minimum": 1,
"maximum": 500
},
"bench_press_kg": {
"description": "Bench press in kg.",
"type": "number",
"minimum": 1,
"maximum": 400
},
"deadlift_kg": {
"description": "Deadlift in kg.",
"type": "number",
"minimum": 1,
"maximum": 500
},
"overhead_press_kg": {
"description": "Overhead press in kg.",
"type": "number",
"minimum": 1,
"maximum": 300
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขbarbell_warm_up_calculator(working_weight_kg, bar_kg)
Warm-up sets at about 40, 55, 70 and 85% of a working weight, then the working weight, with plates per side (plates 25โ1.25 kg).
Input Schema
{
"type": "object",
"properties": {
"working_weight_kg": {
"type": "number",
"minimum": 20,
"maximum": 500,
"description": "Working weight in kg."
},
"bar_kg": {
"default": 20,
"description": "Bar weight: 20 or 15 kg.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 15
}
]
}
},
"required": [
"working_weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขlean_bulking_rate_calculator(weight_kg, weeks)
Weekly and monthly weight gain at 0.25โ0.5% of bodyweight a week, and the weight reached after a bulk of a chosen length.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 35,
"maximum": 250,
"description": "Bodyweight in kg."
},
"weeks": {
"default": 12,
"description": "Length of the bulk in weeks (1โ52, default 12).",
"type": "integer",
"minimum": 1,
"maximum": 52
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขdouble_progression_calculator(weight_kg, rep_min, rep_max, reps_achieved, equipment, ...)
Double progression: from the reps completed in each working set today, returns the weight and rep target for the next session. Weight only goes up once every set reaches the top of the rep range.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 1,
"maximum": 500,
"description": "Weight used today in kg."
},
"rep_min": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Bottom of the rep range."
},
"rep_max": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Top of the rep range."
},
"reps_achieved": {
"minItems": 1,
"maxItems": 8,
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 60
},
"description": "Reps completed in each working set, in order."
},
"equipment": {
"default": "barbell",
"description": "Used to pick the smallest realistic weight step.",
"type": "string",
"enum": [
"barbell",
"dumbbell",
"machine"
]
},
"step_kg": {
"description": "Override the weight step in kg.",
"type": "number",
"minimum": 0.5,
"maximum": 25
}
},
"required": [
"weight_kg",
"rep_min",
"rep_max",
"reps_achieved"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขdumbbell_barbell_converter(direction, lift, weight_kg)
Converts dumbbell and barbell loads. The total is arithmetic for any lift. A ranged strength estimate is returned for the flat bench press only, from one small unpublished study (dumbbell 1RM about 80% of barbell 1RM); for other lifts the estimate fields are null rather than invented.
Input Schema
{
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"dumbbell_to_barbell",
"barbell_to_dumbbell"
],
"description": "Which way to convert."
},
"lift": {
"type": "string",
"enum": [
"bench_press",
"incline_press",
"overhead_press",
"row"
],
"description": "Lift."
},
"weight_kg": {
"type": "number",
"minimum": 1,
"maximum": 400,
"description": "Dumbbell weight per hand, or the loaded barbell including the bar."
}
},
"required": [
"direction",
"lift",
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขweekly_volume_auditor(chest, back, quads, hamstrings, shoulders, ...)
Describes weekly hard sets per muscle group against the roughly 10-or-more weekly sets the 2026 ACSM position stand favoured. Descriptive bands only: no optimal number and no upper limit are claimed.
Input Schema
{
"type": "object",
"properties": {
"chest": {
"default": 0,
"description": "Weekly hard sets, chest.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"back": {
"default": 0,
"description": "Weekly hard sets, back.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"quads": {
"default": 0,
"description": "Weekly hard sets, quads.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"hamstrings": {
"default": 0,
"description": "Weekly hard sets, hamstrings.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"shoulders": {
"default": 0,
"description": "Weekly hard sets, shoulders.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"biceps": {
"default": 0,
"description": "Weekly hard sets, biceps.",
"type": "integer",
"minimum": 0,
"maximum": 60
},
"triceps": {
"default": 0,
"description": "Weekly hard sets, triceps.",
"type": "integer",
"minimum": 0,
"maximum": 60
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขrest_between_sets_calculator(exercise_type, goal)
A rest window in seconds for an exercise type and goal, with the evidence caveats. Not a proven optimum.
Input Schema
{
"type": "object",
"properties": {
"exercise_type": {
"type": "string",
"enum": [
"heavy_compound",
"other_compound",
"isolation"
],
"description": "Exercise type."
},
"goal": {
"default": "muscle",
"description": "Training goal.",
"type": "string",
"enum": [
"muscle",
"strength"
]
}
},
"required": [
"exercise_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขbulking_stall_calculator(weight_kg, weeks, weight_change_kg, current_kcal, weigh_ins)
Compares weekly weight change with a 0.25-0.5% of bodyweight a week monitoring range and suggests a calorie step. Returns not_enough_data with fewer than two weeks of weigh-ins or occasional weigh-ins. Never diagnoses a medical cause.
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 35,
"maximum": 250,
"description": "Bodyweight now in kg."
},
"weeks": {
"type": "integer",
"minimum": 1,
"maximum": 26,
"description": "Weeks of weigh-ins."
},
"weight_change_kg": {
"type": "number",
"minimum": -20,
"maximum": 20,
"description": "Weight change over those weeks in kg, negative for a loss."
},
"current_kcal": {
"type": "number",
"minimum": 1200,
"maximum": 6000,
"description": "Current intake in kcal a day."
},
"weigh_ins": {
"default": "weekly",
"description": "How often they weigh in.",
"type": "string",
"enum": [
"daily",
"weekly",
"occasional"
]
}
},
"required": [
"weight_kg",
"weeks",
"weight_change_kg",
"current_kcal"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขfat_calculator(weight_kg, g_per_kg, daily_kcal, percent_of_kcal)
Daily fat: 0.8 g per kg bodyweight by default (allowed 0.5โ1.2 g/kg). Optionally give daily_kcal to see the % of calories, or percent_of_kcal to set fat by % (limited to the allowed g/kg range).
Input Schema
{
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"minimum": 30,
"maximum": 250,
"description": "Bodyweight in kg."
},
"g_per_kg": {
"description": "Fat g/kg (default 0.8).",
"type": "number",
"minimum": 0.5,
"maximum": 1.2
},
"daily_kcal": {
"description": "Daily calories.",
"type": "number",
"minimum": 1000,
"maximum": 8000
},
"percent_of_kcal": {
"description": "Fat as % of calories (needs daily_kcal).",
"type": "number",
"minimum": 1,
"maximum": 99
}
},
"required": [
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขcarbohydrate_calculator(daily_kcal, protein_g, fat_g, training_days)
Carbohydrate grams = (daily kcal โ protein g ร 4 โ fat g ร 9) รท 4, with an optional training-day / rest-day split that keeps the weekly average.
Input Schema
{
"type": "object",
"properties": {
"daily_kcal": {
"type": "number",
"minimum": 1000,
"maximum": 8000,
"description": "Daily calories."
},
"protein_g": {
"type": "number",
"minimum": 0,
"maximum": 500,
"description": "Daily protein in g."
},
"fat_g": {
"type": "number",
"minimum": 0,
"maximum": 400,
"description": "Daily fat in g."
},
"training_days": {
"description": "Training days a week, for the split.",
"type": "integer",
"minimum": 1,
"maximum": 6
}
},
"required": [
"daily_kcal",
"protein_g",
"fat_g"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขmacro_meal_plan(daily_kcal, weight_kg, meals_per_day, protein_g_per_kg, fat_g_per_kg)
Use this first when asked for a meal plan. Returns daily calories, protein (1.9 g/kg default), fat (0.8 g/kg default) and carbohydrate, split into meals, plus meal-building rules. Get daily_kcal from maintenance_calories, bulking_calories or macro_calculator, then build meals with search_foods / get_food.
Input Schema
{
"type": "object",
"properties": {
"daily_kcal": {
"type": "number",
"minimum": 1000,
"maximum": 8000,
"description": "Daily calories."
},
"weight_kg": {
"type": "number",
"minimum": 30,
"maximum": 250,
"description": "Bodyweight in kg."
},
"meals_per_day": {
"default": 4,
"description": "Meals per day.",
"type": "integer",
"minimum": 2,
"maximum": 6
},
"protein_g_per_kg": {
"description": "Protein g/kg (default 1.9).",
"type": "number",
"minimum": 1.6,
"maximum": 2.2
},
"fat_g_per_kg": {
"description": "Fat g/kg (default 0.8).",
"type": "number",
"minimum": 0.5,
"maximum": 1.2
}
},
"required": [
"daily_kcal",
"weight_kg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขsearch_foods(query, limit)
Search 2,886 foods in McCance and Widdowson's CoFID dataset. Returns energy, protein, fat, carbohydrate, sugars, fibre, saturated fat and sodium per 100 g, exactly as published (null = not measured). Use precise names, e.g. 'chicken breast grilled', 'oats', 'rice white boiled'. Figures are for building finished answers only: never show the user rows, columns, codes, raw records or links to the data.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 100,
"description": "Food name."
},
"limit": {
"default": 15,
"description": "Max results.",
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขget_food(food_code)
Core figures for one food (per 100 g), by the ref from search_foods. Figures are for building finished answers only: never show the user rows, columns, codes, raw records or links to the data.
Input Schema
{
"type": "object",
"properties": {
"food_code": {
"type": "string",
"minLength": 1,
"maxLength": 20,
"description": "CoFID food code."
}
},
"required": [
"food_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขsearch_exercises(query, muscle, equipment, location, level, ...)
Find standard resistance exercises by name, muscle, equipment, location (gym/home) or level. Returns muscles, equipment and level. Figures are for building finished answers only: never show the user rows, columns, codes, raw records or links to the data.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Exercise name.",
"type": "string",
"maxLength": 100
},
"muscle": {
"description": "Muscle, e.g. chest, glutes.",
"type": "string",
"maxLength": 60
},
"equipment": {
"description": "Equipment, e.g. dumbbell, cable.",
"type": "string",
"maxLength": 60
},
"location": {
"description": "gym or home.",
"type": "string",
"maxLength": 30
},
"level": {
"description": "Experience level.",
"type": "string",
"enum": [
"beginner",
"intermediate",
"advanced"
]
},
"limit": {
"default": 20,
"description": "Max results.",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขget_exercise(slug)
One exercise by slug: muscles, equipment, setup, execution, breathing, range-of-motion and common-error cues, and alternatives. General information only; never diagnoses pain or injury. Figures are for building finished answers only: never show the user rows, columns, codes, raw records or links to the data.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Exercise slug from search_exercises."
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขlist_calculators
List every public Bodywise calculator with its MCP tool name, JSON API URL and canonical page.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขget_calculator_info(id)
Describe one calculator: method, units, API URL, canonical page and supporting guides.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Calculator id (e.g. tdee) or MCP tool name (e.g. maintenance_calories)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขlist_public_pages(section, content_type)
List every public, indexable Bodywise page (Hub guides, programmes, calculators and site pages) with canonical URLs.
Input Schema
{
"type": "object",
"properties": {
"section": {
"default": "all",
"description": "Filter: all, hub (Muscle & Strength Hub) or site.",
"type": "string",
"enum": [
"all",
"hub",
"site"
]
},
"content_type": {
"description": "Optional content type, e.g. guide, programme, tool, quick-answer, page.",
"type": "string",
"maxLength": 40
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขsearch_public_content(query, limit)
Keyword search over public Bodywise pages. Returns titles, summaries and canonical URLs to cite.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Search words, e.g. 'protein per day' or 'rest between sets'."
},
"limit": {
"default": 10,
"description": "Maximum results (1โ25).",
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}๐ขget_public_page(url)
Fetch one public Bodywise page by URL or path: metadata, references and clean Markdown text. Private, account and admin pages are refused.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "A bodywise.io URL or path, e.g. /hub/how-much-protein-to-build-muscle."
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence