Skip to main content
Glama

garmin_calendar

Read-only

Retrieves your Garmin training calendar for a date range, including scheduled workouts, races with goal times, and coach plans; scheduled entries include IDs needed for deletion.

Instructions

The training calendar, looking forward by default. Scheduled entries carry the scheduled_id that garmin_delete kind=scheduled_workouts needs.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "garmin_calendar"
  }
}

Input Schema

NameRequiredDescriptionDefault
includeNoscheduled (workouts on the calendar), events (races, with goal time), coach (Garmin Coach plan). Default all
end_dateNoLast day. Default two weeks after start
start_dateNoFirst day. Default today

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the default look-forward window and, more valuably, the fact that scheduled entries expose a scheduled_id consumed by another tool — a real behavioral detail. It still says nothing about result shape (how many entries, ordering, whether past entries are ever returned) beyond the default window, which the schema already states.

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?

Two short sentences with no filler, and the default-scope fact is front-loaded. The opening is a bare noun phrase rather than a clause, which costs a little clarity for the sake of brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero required parameters, no output schema, and read-only annotations, the definition is close to sufficient, but it never describes what a call returns (a list of calendar entries grouped by type?), which is the main thing an agent must predict before invoking a listing tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains include (scheduled/events/coach) and the start/end date defaults. The description adds no syntax, format, or timezone guidance for the date parameters and does not clarify the include enum semantics, so baseline 3 applies.

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?

Names the resource (the training calendar) and its default temporal direction, and distinguishes itself by pointing at the consumer of its data (garmin_delete kind=scheduled_workouts). It never uses an explicit retrieval verb, so an agent must infer that this is a read/list tool, but the resource plus the scheduled_id reference makes the intent unambiguous against siblings like garmin_workouts or garmin_schedule_workouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The forward-looking default and the cross-reference to garmin_delete imply the primary use (inspect upcoming schedule, then fetch scheduled_id to delete one), but there is no explicit when-to-use statement and no exclusion against garmin_training, garmin_workouts, or garmin_schedule_workouts. Usage is inferable rather than stated.

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