Skip to main content
Glama

list_runs

Read-onlyIdempotent

List runs within a date range, or return full saved detail for one run when run_id is provided. Range reads stay compact and return a Runner State summary first. A run_id read returns that run's stored splits and structured segments plus the detailed metrics Elias needs for interval analysis.

DETAILED RANGE: at most 92 days, defaulting to the last 7 days. For totals over any range or all history, use aggregate with a numeric field (except when counting sessions). The aggregate mode returns compact summaries, bypasses the detailed-list date cap, and can group by day, month or year.

Input Schema

NameRequiredDescriptionDefault
fieldNoNumeric field to aggregate; needed except when counting all runs.
run_idNoSpecific run UUID. When provided, returns the full saved run including splits and structured segments and ignores the date range.
end_dateNoEnd of date range, YYYY-MM-DD; defaults to today.
group_byNoOptional date grouping for aggregates; omitted returns one total.
aggregateNoReturn a numeric summary without per-run rows; detailed behavior is unchanged when omitted.
start_dateNoStart of date range. Format: YYYY-MM-DD. Optional. Defaults to 7 days ago.
all_historyNoFor aggregate queries, start at the earliest stored run instead of the recent default.

Output Schema

NameRequiredDescriptionDefault
resultYesHuman-readable result text returned by the tool.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / aggregate
      Added value: +{
      +  "description": "Return a numeric summary without per-run rows; detailed behavior is unchanged when omitted.",
      +  "enum": [
      +    "sum",
      +    "avg",
      +    "min",
      +    "max",
      +    "count"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / all_history
      Added value: +{
      +  "description": "For aggregate queries, start at the earliest stored run instead of the recent default.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / end_date / description
      Previous value: -"End of date range. Format: YYYY-MM-DD. Optional. Defaults to today."New value: +"End of date range, YYYY-MM-DD; defaults to today."
    • addedInput schema / properties / field
      Added value: +{
      +  "description": "Numeric field to aggregate; needed except when counting all runs.",
      +  "enum": [
      +    "distance_mi",
      +    "duration_sec",
      +    "elapsed_sec",
      +    "avg_hr",
      +    "avg_cadence_spm",
      +    "avg_power_w",
      +    "elevation_gain_m",
      +    "rpe",
      +    "heart_points_moderate",
      +    "heart_points_peak"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / group_by
      Added value: +{
      +  "description": "Optional date grouping for aggregates; omitted returns one total.",
      +  "enum": [
      +    "day",
      +    "month",
      +    "year"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / end_date / description
      Previous value: -"End of date range. Format: YYYY-MM-DD. Optional — defaults to today."New value: +"End of date range. Format: YYYY-MM-DD. Optional. Defaults to today."
    • addedInput schema / properties / run_id
      Added value: +{
      +  "description": "Specific run UUID. When provided, returns the full saved run including splits and structured segments and ignores the date range.",
      +  "type": "string"
      +}
    • changedInput schema / properties / start_date / description
      Previous value: -"Start of date range. Format: YYYY-MM-DD. Optional — defaults to 7 days ago."New value: +"Start of date range. Format: YYYY-MM-DD. Optional. Defaults to 7 days ago."
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description earns credit for going beyond them: the 92-day detailed-range cap, the 7-day default, the 'compact summary first' shaping of range reads, and the fact that a run_id read ignores the date range and returns splits, segments and detailed metrics. It does not mention pagination or result-count limits, which is the remaining behavioral gap.

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?

It is two tight paragraphs, front-loaded with the core list/detail split before the mode-specific rules. The persona-flavored aside ('the detailed metrics Elias needs for interval analysis') is the one phrase that does not earn its place, but it does not obscure the operational content.

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 an output schema present, the description correctly avoids re-documenting return fields and instead spends its words on mode selection, date caps, and aggregation routing — everything an agent needs before calling a 7-parameter all-optional tool. Only the relationship to sibling tools like show_runs is left unaddressed.

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 meaning the schema does not carry — the 92-day cap on the detailed range and the interaction rule that a supplied run_id bypasses date-range filtering. Those two constraints materially change how an agent should combine run_id, start_date and end_date.

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

Purpose4/5

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

The description names a specific verb+resource and enumerates two distinct modes: a compact date-range list and a full single-run read keyed on run_id. It is unambiguous about what the tool returns in each mode, but it never differentiates itself from the read-oriented siblings (show_runs, show_workout), so an agent must still infer which of the similarly-named tools to pick.

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?

It gives explicit conditions for each mode ('when run_id is provided', detailed range capped at 92 days defaulting to 7 days) and directs range-total queries to the aggregate path with a numeric field, including the counting-sessions exception. It stops short of stating when NOT to use this tool in favor of a sibling, and 'use aggregate' reads as a parameter switch rather than a clearly labeled tool choice.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.