Skip to main content
Glama
futureweb

Futureweb Intervals MCP

by futureweb

compare_workouts

Read-only

Compare repeated executions of the same workout over time on comparable work intervals to track power, heart rate, cadence and RPE trends.

Instructions

Use to compare repeated executions of the same workout over time (e.g. every 3 x 10 min threshold session) on truly comparable work intervals.

Activities by name search (query), activity_ids or a date range (default the last 90 days); limit 8 (max 12). WORK intervals are split into main set (similar length and intensity), surges, other and excluded; the main set gets time-weighted power, NP, HR, max HR, cadence, W/bpm. Only activities matching the reference pattern (reference_activity_id, else the newest; length ±25 %, intensity ±8 points of FTP) are compared; trends first -> last with n (< 3 not reliable). RPE is whole-activity only; gear and power meter differences are flagged; no verdict. Read-only; one API call per activity plus 1-3 (one more per id with activity_ids). Method: intervals://methods/comparisons (get_guide).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum activities, newest first; capped to 1-12
queryNoText in activity names, or "#tag" for an exact tag
gear_idNoOnly activities on this gear id (get_gear_list)
end_dateNoLast day YYYY-MM-DD; default today
max_repsNoOnly main sets with at most this many intervals
min_repsNoOnly main sets with at least this many intervals
ftp_rangeNoOnly activities with FTP at the time in "low-high" W, e.g. "225-240"
athlete_idNoDefault: the configured athlete
start_dateNoFirst day YYYY-MM-DD; default 90 days before end_date (name search: none, or 365 days before the reference)
include_rpeNoShow whole-activity RPE and its trend
sport_typesNoComma-separated activity types or "all"; default the sport family of the reference or newest
activity_idsNoComma-separated activity ids (query is then ignored)
max_intensityNoOnly WORK intervals at or below this % of FTP
min_intensityNoOnly WORK intervals at or above this % of FTP (replaces the 70 % floor)
output_formatNojson = machine-readable, all fieldstext
comparable_onlyNoTable only activities matching the pattern; false tables all, with the reason
max_interval_secsNoOnly WORK intervals at most this long (s)
min_interval_secsNoOnly WORK intervals at least this long (s); shorter ones under 2 min are surges
reference_activity_idNoActivity whose main set defines the pattern; default the newest

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations: discloses the API-call cost ('one API call per activity plus 1-3'), how intervals are classified (main set, surges, other, excluded), the comparison inclusion rule (length ±25%, intensity ±8 points of FTP), the reliability caveat (n < 3 not reliable), that RPE is whole-activity only, that gear/power meter differences are flagged, and that no verdict is issued.

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?

The purpose is front-loaded in the first clause, followed by dense but relevant operational detail. It is long and packed with parentheticals, which slightly taxes readability, but nearly every sentence carries information an agent needs to invoke and interpret the tool.

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 19-parameter, no-output-schema tool, the description covers selection scope, filtering defaults, interval classification, computed metrics (power, NP, HR, max HR, cadence, W/bpm), trend semantics, reliability thresholds, and known limitations. An agent has enough to call it correctly and interpret results without a return schema.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning: how the reference pattern is chosen (reference_activity_id, else the newest), that query and activity_ids are alternatives, and how interval filters replace defaults (e.g. min_intensity replacing the 70% floor). This adds genuine semantics beyond per-field schema text.

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 and resource (compare repeated executions of the same workout over time) with the scope qualifier 'on truly comparable work intervals.' This clearly differentiates it from siblings like compare_best_efforts, find_similar_intervals, and compare_power_streams, which handle different comparison units.

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?

Gives a concrete usage trigger ('repeated executions of the same workout over time, e.g. every 3 x 10 min threshold session') and points to the method guide via get_guide. It does not explicitly name which sibling to use instead when the user wants a different kind of comparison, so routing is implied rather than spelled out.

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