daniels_predict_race_time
Predict race times for different distances using Jack Daniels' equivalent performance methodology based on your current running performance.
Instructions
Predict race time for a target distance based on a current race performance. Uses Jack Daniels' equivalent performance methodology.
Args: current_distance: Distance of known performance in meters. current_time: Time of known performance in seconds. target_distance: Distance for race time prediction in meters.
Returns: dict: Daniels' VDOT method prediction with value, format, and time_seconds.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| current_distance | Yes | ||
| current_time | Yes | ||
| target_distance | Yes |
Implementation Reference
- MCP tool handler for daniels_predict_race_time: validates inputs, invokes core prediction logic, returns formatted prediction.@mcp.tool def daniels_predict_race_time(current_distance: float, current_time: float, target_distance: float) -> dict: """ Predict race time for a target distance based on a current race performance. Uses Jack Daniels' equivalent performance methodology. Args: current_distance: Distance of known performance in meters. current_time: Time of known performance in seconds. target_distance: Distance for race time prediction in meters. Returns: dict: Daniels' VDOT method prediction with value, format, and time_seconds. """ if current_distance <= 0: raise ValueError("Current distance must be positive") if current_time <= 0: raise ValueError("Current time must be positive") if target_distance <= 0: raise ValueError("Target distance must be positive") time = predict_time_daniels(current_distance, current_time, target_distance) return { "value": time_in_hhmmss(time), "format": "HH:MM:SS", "time_seconds": round(time, 1) }
- Core implementation of Daniels' VDOT-based race time prediction algorithm.def predict_time_daniels(current_distance: float, current_time: float, target_distance: float) -> float: """ Predict race time using Jack Daniels' VDOT method. Args: current_distance: Distance of known performance in meters. current_time: Time of known performance in seconds. target_distance: Distance for race time prediction in meters. Returns: float: Predicted time in seconds. """ # Calculate VDOT from current performance vdot = calculate_vdot_from_performance(current_distance, current_time) # Calculate time for target distance using 100% effort (1.0) time_minutes = get_custom_effort_pace(vdot, target_distance, 1.0) return time_minutes * 60 # Convert minutes to seconds
- src/running_formulas_mcp/server.py:118-146 (registration)The @mcp.tool decorator registers this function as an MCP tool.@mcp.tool def daniels_predict_race_time(current_distance: float, current_time: float, target_distance: float) -> dict: """ Predict race time for a target distance based on a current race performance. Uses Jack Daniels' equivalent performance methodology. Args: current_distance: Distance of known performance in meters. current_time: Time of known performance in seconds. target_distance: Distance for race time prediction in meters. Returns: dict: Daniels' VDOT method prediction with value, format, and time_seconds. """ if current_distance <= 0: raise ValueError("Current distance must be positive") if current_time <= 0: raise ValueError("Current time must be positive") if target_distance <= 0: raise ValueError("Target distance must be positive") time = predict_time_daniels(current_distance, current_time, target_distance) return { "value": time_in_hhmmss(time), "format": "HH:MM:SS", "time_seconds": round(time, 1) }