Skip to main content
Glama
futureweb

Futureweb Intervals MCP

by futureweb

get_athlete_power_curves

Read-only

Compare an athlete's best power by duration across this season, last season, or custom date ranges, returning watts and W/kg with the activity that set each mark.

Instructions

Use for an athlete's best power per duration over whole periods: season bests, progress between seasons or date ranges.

Returns watts and W/kg per duration for this season, last season and/or a custom range, each with the activity that set it. Defaults: Ride, 5 s to 60 min, both seasons; durations that are not curve points are left out. Read-only, one API call. One activity: get_best_efforts; HR and pace: get_hr_curves, get_pace_curves. Method: intervals://methods/comparisons (get_guide).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
end_dateNoLast day YYYY-MM-DD of the custom-range curve, after start_date
durationsNoDurations in seconds as a JSON array of integers, e.g. [5, 60, 300, 1200]; default 5 s to 60 min
athlete_idNoDefault: the configured athlete
start_dateNoFirst day YYYY-MM-DD of an extra custom-range curve; needs end_date
last_seasonNoInclude last season's curve (s1)
this_seasonNoInclude this season's curve (s0)
activity_typeNoActivity type of the curves, e.g. Ride, VirtualRide, RunRide
indoor_outdoorNoOnly indoor or outdoor activities; omit for both
include_normalisedNoInclude W/kg values

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so 'Read-only' is somewhat redundant, but the description adds real behavioral context: one API call, the defaults applied (Ride, 5 s to 60 min, both seasons), and the non-obvious filtering rule that non-curve-point durations are dropped. It also sketches the return shape (watts and W/kg per duration with the setting activity).

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

Conciseness4/5

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

Front-loaded with the 'Use for' purpose, then returns, then defaults, then alternatives — a sensible priority order. It is terse to the point of using compressed fragments (s0, s1, W/kg) that trade a little readability for brevity, but nothing is wasted.

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?

Despite no output schema, the description covers return content (watts and W/kg per duration, with the activity), defaults, filtering behavior, and sibling routing. An agent has everything needed to call it correctly without opening the schema.

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 schema already documents all 9 parameters. The description restates the key defaults and the duration semantics, which is helpful but additive rather than revealing anything the schema lacks; baseline 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?

States a specific verb+resource+scope: an athlete's best power per duration across whole periods (season bests, cross-season progress, custom ranges). It clearly separates itself from get_best_efforts (single activity) and get_hr_curves/get_pace_curves (other metrics) by name.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'One activity: get_best_efforts; HR and pace: get_hr_curves, get_pace_curves', and points to a deeper method guide via get_guide. The 'Use for...' opener states the intended scenario, so when/when-not is largely covered.

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