Skip to main content
Glama

Server Details

Marathon physiology MCP server — 12 tools for race prediction, pacing strategy, fueling plans, running economy, caffeine protocols, heat acclimation, and Strava-connected training load. Citation-backed models from peer-reviewed exercise physiology literature.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.2/5 across 11 of 11 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct aspect of endurance running performance: caffeine modeling, fueling, pacing, athlete data, activities, training load, heat acclimation, pacing strategy, periodization, race prediction, and running economy. No overlap.

Naming Consistency3/5

Names use snake_case but mix verb_noun (e.g., get_my_athlete, predict_race_time), noun_verb (periodization_compare), and pure noun (caffeine_protocol, fueling_plan). Inconsistent pattern but still understandable.

Tool Count5/5

11 tools cover the domain of running performance modeling without being too many or too few. Each tool serves a clear purpose within the server's scope.

Completeness4/5

Covers most core areas: personal data retrieval, activity history, training load, and multiple performance models. Minor gaps like workout creation or nutrition beyond fueling plan, but the surface is largely complete for modeling.

Available Tools

11 tools
caffeine_protocolCaffeine + nicotine pharmacokinetic timingA
Read-onlyIdempotent
Inspect

Model caffeine (and optional nicotine) blood concentration, performance gain, and side-effect curves over a race using a 1-compartment oral PK model. Source: ham.run ergogenic module. Pass useMyData:true to overlay body weight from the connected athlete profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicOnYesEnable nicotine co-administration model.
nicFormYesNicotine delivery form.gum
finishMinYesExpected race duration in minutes.
nicDoseMgYesNicotine dose in mg.
useMyDataNoOverlay body weight from the connected athlete profile.
bodyWeightKgNoBody weight in kilograms.
cafTimingMinYesMinutes BEFORE race start that caffeine is taken.
nicTimingMinYesMinutes before race start for nicotine.
extraCafDosesYesIn-race top-up doses, e.g. with gels.
cafDoseMgPerKgYesPre-race caffeine dose, mg/kg. 3–6 mg/kg is the evidence-based range.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYesEcho of resolved input parameters.
giRiskYesGI distress risk level.
timeSavedMinYesEstimated time saved, minutes.
hrElevationBpmYesExpected HR elevation from caffeine, bpm.
perfCheckpointsYesPerformance checkpoints at ~10 min intervals.
totalCaffeineMgYesTotal caffeine consumed, mg.
peakRpeReductionYesPeak RPE reduction from ergogenic effect.
caffeineDoseEventsYesTimestamped dose events.
avgPerformanceGainPctYesAverage performance gain over race duration, %.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive. Description adds specific behavioral context: 1-compartment PK model, source module, and option to overlay user profile data. This meaningfully extends beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with core purpose, uses active voice. No fluff. Second sentence usefully calls out a key boolean parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite good annotations and schema coverage, description omits any detail about return values despite tool having an output schema. Agent must infer what 'curves' means. Lacks guidance on output format or interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage for all 10 parameters. Description adds no extra parameter-level detail beyond what schema provides, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it models caffeine/nicotine pharmacokinetics for a race. Unambiguous verb 'Model' and specific resource. Distinct from all sibling tools which cover fueling, pacing, training, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. While uniqueness implies usage for ergogenic timing simulation, the agent is not directed away from alternatives or given context on prerequisites like race duration requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fueling_planFueling and time-to-exhaustionA
Read-onlyIdempotent
Inspect

Compute substrate partitioning (CHO/fat oxidation), required carb intake rate, and predicted time-to-glycogen-depletion for an endurance effort. Source: ham.run substrate module. Pass useMyData:true to overlay weight and VO₂max from the connected athlete profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoAthlete sex — affects substrate partitioning.
vo2maxNoEstimated VO₂max in mL O₂ · kg⁻¹ · min⁻¹.
weightKgNoBody weight in kilograms.
pctVO2maxYesRace intensity as % VO₂max.
useMyDataNoOverlay weight and VO₂max from the connected athlete profile.
glycogenPoolGYesStarting muscle+liver glycogen, grams. Typical 400–700.
transportTypeYes"sglt1" caps absorption at 1.0 g/min; "dual" (glucose+fructose) at 1.5 g/min.dual
choIntakeGPerHrYesPlanned CHO intake during race, g/hr.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rerYesRespiratory exchange ratio at given intensity.
inputYesEcho of resolved input parameters.
notesYesWarning if intake exceeds absorption ceiling.
vo2LPerMinYesAbsolute VO₂ at race intensity, L/min.
choEnergyPctYesPercentage of energy from carbohydrate.
energyKJPerMinYesTotal energy expenditure, kJ/min.
timeToExhaustionYesFormatted time to exhaustion.
choOxidationGPerMinYesCarbohydrate oxidation rate, g/min.
fatOxidationGPerMinYesFat oxidation rate, g/min.
timeToExhaustionMinYesMinutes until glycogen depletion.
effectiveIntakeGPerMinYesEffective CHO intake after absorption cap, g/min.
recommendedIntakeGPerHrYesRecommended CHO intake, g/hr.
absorptionCeilingGPerMinYesMax gut absorption rate, g/min.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description adds context about the source module and useMyData overlay. However, it does not detail behavioral traits like data dependency or what happens without useMyData. With annotations, the description adds moderate value but not rich disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences covering main outputs and a key usage hint. No redundant information, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters, an output schema, and clear annotations, the description is mostly complete. It mentions core outputs and the useMyData feature, but could briefly note that parameters are documented in the schema. Still, sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds slight value by explaining useMyData's role, but otherwise repeats schema info. No deep parameter semantics beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes substrate partitioning, required carb intake rate, and predicted time-to-glycogen-depletion, with a specific verb 'compute' and resource 'endurance effort'. It distinguishes from sibling tools like pacing_strategy or caffeine_protocol.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for endurance efforts and mentions a special parameter useMyData, but does not explicitly state when to use this tool vs alternatives, nor are there any exclusions or context about when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gap_paceGrade-adjusted pace splitsA
Read-onlyIdempotent
Inspect

Distribute a goal time across a course profile in proportion to each segment's Minetti gradient cost. Returns per-mile or per-km splits with pace, elevation gain/loss, and average grade. Source: ham.run GAP module.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesCourse profile: parallel arrays of cumulative distance and elevation.
goalTimeYesRace time, "HH:MM:SS" or "MM:SS".
splitUnitYesUnit for split intervals.km

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYesEcho of resolved input parameters.
splitsYesPer-split breakdown.
totalTimeYesGoal time formatted as HH:MM:SS.
totalDistanceMYesTotal course distance, metres.
flatEquivalentPacePerKmYesFlat-equivalent pace per km.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, making safety clear. The description adds behavioral context by explaining the algorithm (Minetti gradient cost) and output details (pace, elevation, grade). It does not contradict annotations and provides value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundant words. First sentence states core action and method, second lists outputs. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description, schema, and annotations together cover purpose, parameters, and safety, the description could briefly mention input constraints (e.g., parallel arrays) or error conditions. However, given high schema coverage and annotations, it is largely complete for a computational tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with detailed descriptions for each parameter (goalTime pattern, splitUnit enum, profile arrays). The description adds minimal additional meaning beyond what the schema provides, such as mentioning 'goal time' and 'course profile' but not delving into parameter specifics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Distribute' and the resource 'a goal time across a course profile', specifying the method (Minetti gradient cost) and output (per-mile or per-km splits with pace, elevation, grade). It distinguishes itself from sibling tools like 'pacing_strategy' by focusing on grade-adjusted splits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating grade-adjusted pace splits but does not explicitly contrast with siblings or specify when not to use it. No guidance on alternatives or context is provided, leaving the agent to infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_athleteGet the connected athlete profileA
Read-only
Inspect

Returns the signed-in athlete's profile (age, sex, weight, VO₂max, marathon PR, biomechanics) plus derived HR zones. Use this once at the start of a coaching conversation so subsequent calculations can be personalised. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceNoData source identifier.
messageNoGuidance message if no profile exists.
profileYesAthlete profile (age, sex, weight, VO₂max, marathon PR, biomechanics) or null.
derivedZonesNoHR training zones derived from profile.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declared, the description adds the requirement for authentication and indicates the response includes derived HR zones. This provides useful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the main purpose, and every sentence adds value (what it returns, when to use, auth requirement). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the presence of an output schema, the description is complete: it states the return content, usage context, and authentication need. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and schema coverage is 100% (no params to describe). The description does not need to add parameter details, so baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns the signed-in athlete's profile with specific fields (age, sex, weight, VO₂max, etc.) and derived HR zones. This verb-resource combination is distinct from sibling tools like get_recent_activities or get_training_load.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this once at the start of a coaching conversation so subsequent calculations can be personalised,' providing clear context for when to invoke it. It does not explicitly list alternatives but implies it's a prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_activitiesGet the athlete's recent runsA
Read-only
Inspect

List the signed-in athlete's recent activities with date, distance, duration, pace, average HR, and HR-zone classification. Use to ground training-status questions ("how was my last week?", "did I overdo it?"). Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitYesMaximum number of activities to return.
sportNoFilter by sport type, e.g. "Run", "Ride".
sinceDaysNoOnly return activities from the last N days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of activities returned.
windowYesDescription of the query window.
activitiesYesActivity list.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false; description adds authentication requirement and specific output fields, adding value without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with action and output details, followed by usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present, description doesn't need return values. Covers purpose, usage, and authentication. Omits edge cases but adequate for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema fully documents parameters. Description provides no additional parameter details beyond the schema, resulting in baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'List' and resource 'signed-in athlete's recent activities' with detailed fields (date, distance, duration, pace, average HR, HR-zone classification), clearly distinguishing from sibling tools like get_training_load or get_my_athlete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use to ground training-status questions', providing clear context. Does not explicitly list alternatives but the sibling set implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_training_loadGet weekly volume + CTL/ATL/TSBA
Read-only
Inspect

Return per-week distance, time-in-zone, and rolling chronic/acute training load (CTL, ATL, TSB) for the signed-in athlete. TSS is estimated from HR (avg_hr / threshold_hr clamped), so values are useful for trends but not directly comparable to power-based TSS. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
weeksYesNumber of weeks of history to analyse.

Output Schema

ParametersJSON Schema
NameRequiredDescription
weeksYesPer-week volume and zone distribution.
caveatsYesWarning if threshold HR was not available.
fitnessYesFitness/fatigue model output.
windowWeeksYesWeeks of data returned.
thresholdHrUsedYesThreshold HR used for TSS estimation.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true. The description adds valuable behavioral details: authentication requirement, TSS estimation from HR clamped to threshold, and that values are for trends not direct comparison. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, concise, front-loaded with key results. Every sentence provides necessary information without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not detail return structure. It covers all essential aspects: metrics returned, estimation method, authentication, and intended use. Complete for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'weeks' with schema coverage 100%. The description doesn't add meaning beyond the schema (default, min, max). For a simple integer parameter, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns per-week distance, time-in-zone, and rolling CTL/ATL/TSB. The name and title are descriptive. Sibling tools are unrelated, so no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies it returns data for the signed-in athlete and requires authentication. It includes a caveat about TSS estimation, implying use for trends. It doesn't explicitly list when not to use or alternative tools, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

heat_acclimation_planSauna / heat acclimation forecastA
Read-onlyIdempotent
Inspect

Predict plasma volume expansion, VO₂max gain, race-time improvement, growth-hormone response, and overtraining risk for a sauna heat-acclimation protocol. Source: ham.run sauna module (Scoon 2007, Kirby 2021).

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoAthlete sex — affects thermoregulation and adaptation rate.
tempCYesSauna temperature in °C.
weeksYesTotal weeks of the protocol.
coldPlungeYesCold plunge after each sauna session.
durationMinYesSession duration in minutes.
sessionsPerWeekYesSauna sessions per week.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYesEcho of resolved input parameters.
hormonesYesHormonal responses.
adaptationsYesPerformance adaptations from heat acclimation.
thermalDoseYesCumulative thermal dose metric.
overtrainingRiskPctYesOvertraining risk, %.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by listing the exact predictions (e.g., plasma volume expansion, VO₂max gain) and sources, aligning with annotations and providing useful detail beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. The first sentence front-loads the action and outputs, and the second provides source attribution. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a comprehensive input schema and output schema (per context signals), the description is nearly complete. It covers the tool's purpose and output details. Minor addition could be a prerequisite note, but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having descriptions. The description lists overall outputs but does not add new meaning to individual parameters. Baseline 3 is appropriate as the schema already documents parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'predict' and specifies the resource 'sauna heat-acclimation protocol', listing multiple specific outputs. It cites sources, adding credibility, and is distinct from sibling tools like caffeine_protocol or fueling_plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for sauna heat-acclimation planning but does not explicitly state when to use it vs alternatives or provide exclusions. The context is clear from the domain, but guidance on when not to use is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pacing_strategyMarathon pacing — cardiac drift, hydration, sodiumA
Read-onlyIdempotent
Inspect

Simulate marathon HR drift and fluid/sodium balance under given heat, sweat, and aid-station conditions. Returns total drift, decoupling %, kilometre at LT₂ breach, plasma sodium, and body-weight loss. Source: ham.run HR pacing module. Pass useMyData:true to overlay age + restingHr + weight from the connected athlete profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoAge in years.
sexNoAthlete sex — affects sweat rate and thermoregulation.
maxHrNoMeasured maximum heart rate, bpm. Falls back to age-predicted if omitted.
tempCYesAir temperature, °C.
hrRestNoResting heart rate, bpm.
useMyDataNoOverlay age, resting HR, and weight from the connected athlete profile.
bodyWeightKgNoBody weight in kilograms.
intensityPctYesTarget effort as % of HRR.
fluidPerStationMlYesFluid intake per aid station, mL.
sodiumPerStationMgYesSodium intake per aid station, mg.
sweatSodiumMmolPerLYesSweat sodium concentration in mmol/L (typical 30–60).
baselineSweatRateLPerHrYesBaseline sweat rate, L/hr.

Output Schema

ParametersJSON Schema
NameRequiredDescription
lt1YesLT1 heart rate, bpm.
lt2YesLT2 heart rate, bpm.
hrMaxYesAge-predicted or measured max HR, bpm.
inputYesEcho of resolved input parameters.
hrStartYesStarting HR at target intensity, bpm.
pacingKmhYesAverage pacing speed, km/h.
finishTimeYesPredicted finish time.
checkpointsYes5-km checkpoint data.
lt2BreachKmYesKilometre where HR breaches LT2, or null.
decouplingPctYesCardiac decoupling, %.
finalPlasmaNaYesFinal plasma sodium, mmol/L.
totalDriftBpmYesTotal cardiac drift over the marathon, bpm.
pctBodyWeightLostYesBody weight lost, %.
totalFluidDeficitLYesTotal fluid deficit at finish, L.
totalSodiumDeficitMgYesTotal sodium deficit at finish, mg.
actualSweatRateLPerHrYesTemperature-adjusted sweat rate, L/hr.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent behavior. The description adds context by stating it is a simulation, listing return values, and noting the source module (ham.run). This enriches the behavioral understanding beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at three brief segments: purpose+outputs, source, and usage hint. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, 6 required) and the presence of an output schema (as indicated), the description adequately covers what the tool does, its inputs in aggregate, and its outputs. It could mention the full set of return values or clarify that the output schema details them, but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already explains each parameter. The description adds marginal value by hinting at 'heat, sweat, and aid-station conditions' and highlighting useMyData, but does not elaborate on individual parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool simulates marathon HR drift and fluid/sodium balance under specified conditions, listing specific outputs like total drift, decoupling %, and plasma sodium. This distinguishes it from siblings that cover caffeine, fueling, heat acclimation, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use (simulating marathon pacing conditions) and mentions the useMyData flag for overlaying athlete profile data. However, it does not explicitly state when not to use this tool or name alternatives, though the uniqueness of the functionality makes such guidance less critical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

periodization_compareCompare 16-week training plan modelsA
Read-onlyIdempotent
Inspect

Forecast race-time progression across pyramidal, polarized, and threshold periodization models for a given weekly volume and starting marathon time. Returns weekly evolution of VO₂max, running economy, LT₂, and predicted finish. Source: ham.run periodization module.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageYesAge in years.
sexNoAthlete sex — affects VO₂max ceiling and adaptation curves.
modelsYesSubset of models to compare. Default: all three.
baseWeeksYesBase phase duration, weeks.
buildWeeksYesOptional ramp weeks before base.
totalWeeksYesTotal training block length, weeks.
weeklyVolumeKmYesAverage peak training volume, km/week.
startingMarathonTimeYesCurrent marathon PR / fitness baseline.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYesEcho of resolved input parameters.
modelsYesResults keyed by model name.
startingTimeYesStarting marathon time formatted.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description adds value by specifying outputs (weekly evolution of VO₂max, running economy, LT₂, predicted finish) and source. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the core purpose and list key outputs. No unnecessary words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated in context), the description does not need to detail return values. It adequately covers inputs, outputs, and source, making it complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing detailed descriptions for all parameters. The tool description does not add further elaboration beyond what the schema already captures, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('forecast') and clearly identifies the resource ('race-time progression across pyramidal, polarized, and threshold periodization models'), distinguishing it from siblings like predict_race_time which predicts a single race time without model comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use: when comparing training models given weekly volume and starting time. While it doesn't explicitly state when not to use or list alternatives, the context is sufficiently clear for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_race_timePredict race timesA
Read-onlyIdempotent
Inspect

Predict times across 5K / 10K / Half / Marathon from a known race result, using the Riegel exponent (1.06) and age-graded performance scores against IAAF world records. Source: ham.run race predictor. Pass useMyData:true to overlay age + sex from the connected athlete profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoAge in years.
sexNoAthlete sex — used for age-graded scoring against world records.
knownTimeYesRace time, "HH:MM:SS" or "MM:SS".
useMyDataNoOverlay age + sex from the connected athlete profile.
knownDistanceMetersYesDistance in metres.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYesEcho of resolved input parameters.
methodYesDescription of the prediction methodology.
predictionsYesPredictions for each standard race distance.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds context on the mathematical model (Riegel exponent, age-graded) and source, without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no wasted words. Front-loaded with purpose and methodology, followed by source and optional parameter guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a predictive tool with an output schema, the description sufficiently covers the model (distances, method), optional parameters, and source. No gaps given the available structured information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds value by explaining the Riegel exponent and age-graded scoring, and clarifying the useMyData overlay, beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it predicts race times across specific distances (5K, 10K, Half, Marathon) from a known result, using the Riegel exponent and age-graded scoring. This specificity distinguishes it from sibling tools like pacing_strategy or gap_pace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning optional parameters and the useMyData flag for profile data, but does not explicitly state when not to use or provide comparisons to alternatives like gap_pace or pacing_strategy.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

running_economyRunning economy (Cr) calculatorA
Read-onlyIdempotent
Inspect

Compute oxygen cost of running (Cr in mL O₂·kg⁻¹·m⁻¹) given pace, gradient, surface, shoe type, and athlete characteristics. Returns full multiplicative breakdown. Source: ham.run running-economy module (Barnes & Kilding 2015 + Minetti 2002).

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoAthlete sex — affects economy baseline.
shoesYesShoe type — "super" = carbon-plated race shoes.standard
vo2maxNoEstimated VO₂max in mL O₂ · kg⁻¹ · min⁻¹.
surfaceYesRunning surface.road
gradientYesSlope as a decimal (0.05 = 5% uphill).
heightCmNoHeight in centimetres.
weightKgNoBody weight in kilograms.
useMyDataNoOverlay athlete profile data.
marathonPrNoMarathon PR for caliber estimation.
paceMperMinYesRunning pace in metres per minute. 267 = 16 km/h reference.

Output Schema

ParametersJSON Schema
NameRequiredDescription
CrYesRunning economy cost, mL O₂·kg⁻¹·m⁻¹.
inputYesEcho of resolved input parameters.
caliberYesRunner caliber classification.
kJperKmYesEnergy cost per km, kJ (requires weight).
breakdownYesMultiplicative factor breakdown.
vo2at16kmhYesEstimated VO₂ at 16 km/h reference pace, mL/kg/min.
classificationYesEconomy tier (e.g. "elite", "good", "average").
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, non-destructive. The description adds value by noting the return of a 'full multiplicative breakdown' and citing scientific sources, which helps the agent understand the calculation style.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that efficiently convey the tool's purpose, output, and source. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 10 parameters and an output schema (not shown but exists). The description mentions the return type ('full multiplicative breakdown'), which suffices given the output schema. Could add more detail about the output format but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline score is 3. The description adds no extra meaning beyond the schema's parameter descriptions, which are already clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes oxygen cost of running (Cr) with specific inputs and returns a full multiplicative breakdown. It is distinct from siblings which focus on other training aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. Usage is implied by the tool's purpose but alternatives are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources