Skip to main content
Glama

Nolio

Apply a template to the calendar

apply_training_frame

Schedule a library template on the calendar — the same gesture as dragging a template onto the calendar in the app. Use this to schedule an existing library template — do not copy its content manually via create. No content overrides here: to adjust the result, call update_planned_training afterwards. At most one of "athletes" or "group" — never both. Omit both to target your own calendar (self). If a request expands to more than 3 creations, updates or deletions, do not call this tool in a loop: send them all as one POST batch/ via nolio_api_write with dry_run=true (PATCH and DELETE on planned// and library// included), get the user's go-ahead on a plain-language recap of what will change on whose calendar, then resend the same operations with the returned confirm_token. Before scheduling anything on a period, read what is already there in one call: get_calendar with mode='planned' over the window (and athlete for a managed athlete) renders the workouts, competitions, cycles, notes and quizzes at once; surface the conflicts before proposing.

Input Schema

NameRequiredDescriptionDefault
timeNoStart time, HH:MM. Mutually exclusive with "moment" — provide at most one of the two.
frameYesPublic id (tfr_…) of the library template to apply — found via list_training_frames.
groupNoPublic group id from list_athletes (e.g. grp_…), for a collective workout. At most one of "athletes" or "group" — never both. Omit both to target your own calendar (self).
momentNoPart of day. Mutually exclusive with "time" — provide at most one of the two.
athletesNoPublic athlete ids from list_athletes (e.g. usr_…) — an array even for a single athlete. At most one of "athletes" or "group" — never both. Omit both to target your own calendar (self).
date_startYesScheduled date, YYYY-MM-DD. Relative dates always resolve forward: a named weekday = the next occurrence, today included. Past dates are allowed (coaches backfill plans) — but confirm with the user before creating when a resolved date unexpectedly lands in the past.
recurrenceNoRepeat as on the web. A rule change requires recurrence_action following or all and rebuilds that selection; null with action all keeps only the selected event. The audience (athletes or group) only changes with action one, one occurrence at a time, and never together with a rule change.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly=false, destructive=false, openWorld=false; the description goes well beyond by disclosing that no content overrides are possible, that audiences are mutually exclusive (athletes XOR group, omit for self), that bulk expansion must be routed through a dry-run/confirm batch rather than a loop, and that conflicts should be surfaced first. That is the kind of rate-limit/confirmation and side-effect context the annotations cannot carry.

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 correctly: the action and app analogy come first, then alternatives, then the bulk-work protocol. The bulk paragraph is dense and contains a small artifact ("POST batch/ "), and slightly crowds out the core call pattern, but every sentence does carry instructions an agent would otherwise get wrong.

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 7-parameter tool with a nested recurrence object and no output schema, the description covers preconditions, audience targeting, post-call adjustment path and the escalation route for bulk changes. Nothing an agent needs in order to invoke this correctly is missing.

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% and the schema already documents mutual exclusions, date resolution and recurrence, so the description is largely restating it. It still adds one genuinely new parameter-level fact — that no content-override parameters exist on this call — which prevents an agent from hunting for a title or override field.

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 concrete verb and resource ("Schedule a library template on the calendar") and anchors it with an app analogy ("same gesture as dragging a template onto the calendar"), which instantly fixes the mental model. It explicitly separates itself from create_planned_training ("do not copy its content manually via create"), so an agent can pick it over siblings without opening a 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?

Gives explicit when-to-use (schedule an existing library template), when-not (do not use it to recreate content via create), and the follow-up path ("call update_planned_training afterwards" to adjust). It also names the operational alternative for bulk work — nolio_api_write with dry_run=true and a confirm_token — plus a precondition read via get_calendar mode='planned'.

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