Skip to main content
Glama
futureweb

Futureweb Intervals MCP

by futureweb

get_activity_streams

Read-only

Fetch raw time-series samples for an activity (power, HR, cadence, altitude, custom) when summaries lack detail. Choose summary, CSV, or JSON, and slice or downsample by index/time.

Instructions

Use for the raw time-series samples of one activity (power, HR, cadence, altitude or any custom stream such as Stamina) when summaries are not enough.

Default output is a per-stream summary (units, statistics, first/last values); full gives a CSV table, json one object with arrays (empty/null = no value). Default streams: time, watts, heartrate, cadence, altitude, distance, velocity_smooth; "all" = every stream. full/json return at most max_points samples (default 2000) and say where to continue; slice by index or time, downsample keeps every n-th sample. time = seconds since start, pauses appear as jumps. Read-only. Discover streams with list_activity_streams. Method: intervals://methods/activity-data (get_guide).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
end_timeNoOnly samples with time < this, seconds since start (full/json)
end_indexNoSample index to stop before (exclusive; full/json)
downsampleNoKeep every n-th sample in full/json (skipped, never averaged)
max_pointsNoMax samples in full/json, at most 20000; longer output is cut with a continue hint
start_timeNoOnly samples with time >= this, seconds since start (full/json)
activity_idYesActivity id, e.g. i123456789
start_indexNoFirst sample index (full/json); same indices as get_activity_intervals
stream_typesNoComma-separated stream types (standard or custom codes) or all; default time,watts,heartrate,cadence,altitude,distance,velocity_smooth
output_formatNosummary = per-stream units, statistics, preview; full = CSV row per sample; json = one object with arrays and next_start_indexsummary

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 past the readOnlyHint/openWorldHint annotations, which only confirm safety. It discloses the three output modes and their return shapes, the default stream set and that 'all' expands it, the 2000/20000 point cap with a continue hint instead of silent truncation, that downsample skips rather than averages, and that time is seconds-since-start with pauses appearing as jumps.

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 case, then organized by output mode and stream selection, with zero filler sentences. It is dense and packed into one block, which costs a little scannability, but no sentence is redundant.

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?

There is no output schema, so the description carries the return-value burden and does so fully: what summary returns (units, statistics, first/last), what full returns (CSV row per sample), what json returns (one object with arrays and next_start_index), and how empty/null values read. Nothing needed to call it correctly is absent.

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 baseline is 3, but the description adds real meaning the schema doesn't: the concrete default stream list, the semantics of 'all', the max_points default and the continuation behavior, and that slices can be expressed by index or by time. It stops short of clarifying every parameter (e.g. the index coordinate system is only hinted via get_activity_intervals).

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 ('raw time-series samples of one activity') and immediately scopes it against the summary tools ('when summaries are not enough'). Sibling tools like get_activity_details or get_activity_intervals are distinguishable from this at a glance, and the enumerated streams (power, HR, cadence, altitude, custom like Stamina) confirm the exact payload.

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 clear selection condition ('when summaries are not enough') and routes discovery to list_activity_streams plus the intervals://methods/activity-data guide. What's missing is an explicit when-not or a named summary-tool alternative, so the agent still has to infer which sibling to fall back to.

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