Skip to main content
Glama

Nolio

Read training calendar

get_calendar
Read-only

Read a training calendar: your own, a managed athlete's with athlete, or a group's with group.

mode: 'real' (workouts actually done, the default) or 'planned' (the prescription). Both modes render the whole calendar palette over the window, each type its own list, plus has_more per type: planned gives trainings, competitions (with goal_type), cycles (with date_end), notes and quizzes; real gives trainings and competitions (the races actually run, so a realized calendar read without them misses every race). Every real training and competition carries the athlete's debrief (rpe, feeling, comment, answers to the coach's debrief questions); a coach's comments on a session are in its conversation (read_conversations with event), its laps and curves in get_training. Read it before scheduling anything on a period and surface the conflicts (a race in the window, a cycle already covering it, a duplicate) before proposing. If one type cannot be read the whole call fails (failed names the types): never treat that as an empty calendar. has_more[type]=true means that type's window is incomplete. Read the next page with types=[<type>] and starting_after set to the last returned item's id, keeping the same date_from/date_to/athlete/group/limit: drop group on the next page and you silently switch to your own calendar. Continue until has_more=false before concluding or scheduling. Planned mode makes five API requests, real two, each subject to the API quota. types: read only these types of the mode's palette (e.g. ['competitions']). starting_after: next page of a single type, with types naming that one type. athlete: a managed athlete's usr_… handle (from list_athletes) to read their calendar; omit to read your own. An athlete you do not coach is refused (403). group: a grp_… handle (from list_athletes) to read what a group you manage has planned together: the workouts posted on the group itself, not the individual ones of its members. Never pass it with athlete. Planned mode only; a group you do not manage is refused (404). date_from / date_to: 'YYYY-MM-DD' window (omit for the most recent events). limit: max rows per type. Planned defaults to 100 with date_from or date_to, 10 without; real defaults to 10 even with a window. time_in_zones: add the per-zone seconds of every training. Off by default because it is heavy; turn it on only when the question is about intensity distribution. For a whole period, prefer the zones_duration_* chart of get_stats_chart. full_descriptions: planned descriptions are cut to their first 250 characters, flagged description_truncated. Read a planned workout with get_planned_training for its full text, or turn this on over a narrow window; it returns every text of the window. with_description_html: planned mode only, add description_html (the stored description in HTML, never cut) to every event. Read it over the event's date before changing a description that is already set.

Input Schema

NameRequiredDescriptionDefault
modeNoreal
groupNo
limitNo
typesNo
athleteNo
date_toNo
date_fromNo
time_in_zonesNo
starting_afterNo
full_descriptionsNo
with_description_htmlNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond readOnlyHint: discloses that a single unreadable type fails the whole call with `failed`, that has_more[type]=true means an incomplete window and how to paginate without silently switching calendars, that planned mode costs five API requests vs two against the quota, and that an uncoached athlete is refused 403 and an unmanaged group 404. Also flags description truncation at 250 characters.

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?

Purpose and mode semantics are front-loaded and most sentences carry operational payload, but the pagination paragraph and the return-value tour run long and restate some ground the output schema already covers. Dense rather than padded, though not maximally tight.

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 an 11-parameter, two-mode, paginated, quota-metered read tool this covers the full decision surface: what each mode returns, failure semantics, refusal codes, pagination continuity rules, and cross-references to the tools that hold the data this one omits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 11 parameters, so the description must carry everything and does: it documents every parameter, including non-obvious defaults (limit 100 with a window / 10 without in planned, 10 always in real), the usr_/grp_ handle formats, the interaction between `types` and `starting_after`, and which flags are mode-restricted.

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?

Opens with a specific verb+resource plus three scoping variants ('your own, a managed athlete's with `athlete`, or a group's with `group`'), then splits the resource into the 'real' vs 'planned' palettes and enumerates the types each returns. This lets an agent separate it from get_planned_training, list_planned_trainings and get_training without opening any schema.

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?

Explicit routing: 'Read it before scheduling anything on a period', 'Read a planned workout with get_planned_training for its full text', and 'For a whole period, prefer the `zones_duration_*` chart of get_stats_chart' instead of time_in_zones. It also states negative constraints ('Never pass it with `athlete`', group is planned mode only) and when to drop the heavy flags.

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.

Resources