Marathon fueling, pace, hydration, heat, carb-loading, and gel-comparison calculators.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Calculate pre-race carb loading targets by race type, body weight, finish time, and experience level. Returns daily carb target, protocol length, total carbs, and pre-race meal size.
Race distance category.
Runner experience level.
Body weight in pounds.
Expected finish time, hours portion.
Expected finish time, minutes portion.
Whether the runner has a sensitive stomach. Default false.
Calculate pre-race carb loading targets by race type, body weight, finish time, and experience level. Returns daily carb target, protocol length, total carbs, and pre-race meal size.
| Argument | Type | Description |
|---|---|---|
| raceType* | string | Race distance category. |
| experience* | string | Runner experience level. |
| hasGIIssues | boolean | Whether the runner has a sensitive stomach. Default false. |
| bodyWeightLbs* | number | Body weight in pounds. |
| finishTimeHours* | number | Expected finish time, hours portion. |
| finishTimeMinutes* | number | Expected finish time, minutes portion. |
{
"type": "object",
"required": [
"bodyWeightLbs",
"raceType",
"finishTimeHours",
"finishTimeMinutes",
"experience"
],
"properties": {
"raceType": {
"enum": [
"half",
"marathon",
"ultra"
],
"type": "string",
"description": "Race distance category."
},
"experience": {
"enum": [
"first_timer",
"intermediate",
"experienced",
"elite"
],
"type": "string",
"description": "Runner experience level."
},
"hasGIIssues": {
"type": "boolean",
"description": "Whether the runner has a sensitive stomach. Default false."
},
"bodyWeightLbs": {
"type": "number",
"description": "Body weight in pounds."
},
"finishTimeHours": {
"type": "number",
"description": "Expected finish time, hours portion."
},
"finishTimeMinutes": {
"type": "number",
"description": "Expected finish time, minutes portion."
}
}
}Build a minute-by-minute race or long-run fueling plan. Returns target carbs/hour, gel count, gel timing schedule, and total carbs. This is the core FuelCenter tool.
| Argument | Type | Description |
|---|---|---|
| hours* | number | Race or run duration, hours portion. |
| buffer | number | Minutes of buffer at start and end where no gel is taken. Default 5. |
| gelKey* | string | Gel product key. See /api/tools/gel-comparison for full catalog. |
| minutes* | number | Race or run duration, minutes portion. |
| drinkMix | boolean | Whether the runner uses a carbohydrate drink mix. Default false. |
| intensity* | string | Effort level. |
| targetCPH | number | Target carbs per hour. If omitted, default is derived from guideline. |
| experience | string | Runner experience with fueling. Default "standard". |
Return the FuelCenter gel catalog (SiS Beta Fuel, Maurten, Precision, GU, Tailwind, Spring, Carbs Fuel, neversecond, Huma) with carbs, price, caffeine, weight, and carbs-per-dollar. Optionally sort.
| Argument | Type | Description |
|---|---|---|
| sortKey | string | Column to sort by. Default "carbsPerDollar". |
| sortDirection | string | Sort direction. Default "desc". |
{
"type": "object",
"properties": {
"sortKey": {
"enum": [
"carbsPerDollar",
"carbs",
"priceUsd",
"weightG",
"caffeineMg"
],
"type": "string",
"description": "Column to sort by. Default \"carbsPerDollar\"."
},
"sortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction. Default \"desc\"."
}
}
}Estimate how temperature and humidity will slow your race pace and change your fluid needs. Returns adjusted pace, slowdown percent, dew point, risk level, and fueling note.
| Argument | Type | Description |
|---|---|---|
| tempF* | number | Air temperature at race time in degrees Fahrenheit. |
| humidity* | number | Relative humidity as a percentage, 0-100. |
| distanceMiles* | number | Race distance in miles. |
| paceSecondsPerMile* | number | Your goal pace in seconds per mile (cool-weather pace). |
{
"type": "object",
"required": [
"paceSecondsPerMile",
"distanceMiles",
"tempF",
"humidity"
],
"properties": {
"tempF": {
"type": "number",
"description": "Air temperature at race time in degrees Fahrenheit."
},
"humidity": {
"type": "number",
"description": "Relative humidity as a percentage, 0-100."
},
"distanceMiles": {
"type": "number",
"description": "Race distance in miles."
},
"paceSecondsPerMile": {
"type": "number",
"description": "Your goal pace in seconds per mile (cool-weather pace)."
}
}
}Estimate fluid and sodium needs for a race or long run based on body weight, duration, intensity, temperature, and humidity.
| Argument | Type | Description |
|---|---|---|
| tempF* | number | Temperature in Fahrenheit. |
| humidity* | number | Relative humidity, 0-100. |
| intensity* | string | Effort level. |
| bodyWeightLbs* | number | Body weight in pounds. |
| durationMinutes* | number | Run or race duration in minutes. |
{
"type": "object",
"required": [
"bodyWeightLbs",
"durationMinutes",
"intensity",
"tempF",
"humidity"
],
"properties": {
"tempF": {
"type": "number",
"description": "Temperature in Fahrenheit."
},
"humidity": {
"type": "number",
"description": "Relative humidity, 0-100."
},
"intensity": {
"enum": [
"easy",
"moderate",
"hard",
"race"
],
"type": "string",
"description": "Effort level."
},
"bodyWeightLbs": {
"type": "number",
"description": "Body weight in pounds."
},
"durationMinutes": {
"type": "number",
"description": "Run or race duration in minutes."
}
}
}Given any two of distance, total time, or pace-per-mile, calculate the third. Returns pace per mile, per km, splits, and speed.
| Argument | Type | Description |
|---|---|---|
| mode* | string | Which field to solve for. |
| totalSeconds | number | Required for mode "pace" or "distance". |
| distanceMiles | number | Required for mode "pace" or "time". |
| paceSecondsPerMile | number | Required for mode "time" or "distance". |
{
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"pace",
"time",
"distance"
],
"type": "string",
"description": "Which field to solve for."
},
"totalSeconds": {
"type": "number",
"description": "Required for mode \"pace\" or \"distance\"."
},
"distanceMiles": {
"type": "number",
"description": "Required for mode \"pace\" or \"time\"."
},
"paceSecondsPerMile": {
"type": "number",
"description": "Required for mode \"time\" or \"distance\"."
}
}
}Predict your finish time at common distances (5K through 100 miles) from a recent race result using the Riegel formula.
| Argument | Type | Description |
|---|---|---|
| exponent | number | Riegel exponent. Default 1.06. |
| knownTimeSeconds* | number | Finish time for that race, in total seconds. |
| knownDistanceMiles* | number | Distance of your recent race, in miles. |
{
"type": "object",
"required": [
"knownDistanceMiles",
"knownTimeSeconds"
],
"properties": {
"exponent": {
"type": "number",
"description": "Riegel exponent. Default 1.06."
},
"knownTimeSeconds": {
"type": "number",
"description": "Finish time for that race, in total seconds."
},
"knownDistanceMiles": {
"type": "number",
"description": "Distance of your recent race, in miles."
}
}
}| drinkCarbsTotal |
| number |
| Total grams of carbs from drink mix across the run. Default 0. |
{
"type": "object",
"required": [
"hours",
"minutes",
"intensity",
"gelKey"
],
"properties": {
"hours": {
"type": "number",
"description": "Race or run duration, hours portion."
},
"buffer": {
"type": "number",
"description": "Minutes of buffer at start and end where no gel is taken. Default 5."
},
"gelKey": {
"enum": [
"sis_beta_fuel",
"maurten_100",
"maurten_160",
"precision_pf30",
"gu_energy",
"gu_roctane",
"tailwind",
"spring_energy",
"carbs_fuel",
"neversecond_c30",
"huma_chia"
],
"type": "string",
"description": "Gel product key. See /api/tools/gel-comparison for full catalog."
},
"minutes": {
"type": "number",
"description": "Race or run duration, minutes portion."
},
"drinkMix": {
"type": "boolean",
"description": "Whether the runner uses a carbohydrate drink mix. Default false."
},
"intensity": {
"enum": [
"easy",
"easy_moderate",
"moderate_hard",
"race_day"
],
"type": "string",
"description": "Effort level."
},
"targetCPH": {
"type": "number",
"description": "Target carbs per hour. If omitted, default is derived from guideline."
},
"experience": {
"enum": [
"standard",
"experienced"
],
"type": "string",
"description": "Runner experience with fueling. Default \"standard\"."
},
"drinkCarbsTotal": {
"type": "number",
"description": "Total grams of carbs from drink mix across the run. Default 0."
}
}
}