Skip to main content
Glama
JJRPF

Garmin MCP Server

by JJRPF

schedule_workouts

Schedule multiple workouts to specific calendar dates in Garmin Connect with a single call, using existing workout IDs or inline workout data to upload and schedule them together.

Instructions

Schedule multiple workouts to specific calendar dates

This adds workouts to your Garmin Connect calendar in a single call. Each item can either reference an existing workout by ID, or provide inline workout_data to upload-and-schedule in one step.

Args: schedules: List of workout schedules, each with: - calendar_date (str): Date to schedule the workout in YYYY-MM-DD format (required) - workout_id (int): ID of an existing workout to schedule (required unless workout_data is provided) - workout_data (dict): Inline workout JSON to upload first, then schedule (optional). When provided, workout_id is not required. Uses the same structure and target-value rules as upload_workout.

Examples: Schedule existing workouts by ID: [{"workout_id": 123456, "calendar_date": "2024-01-15"}, {"workout_id": 789012, "calendar_date": "2024-01-17"}]

Upload and schedule inline:
[{"calendar_date": "2024-01-15", "workout_data": {"workoutName": "Easy Run", ...}},
 {"workout_id": 789012, "calendar_date": "2024-01-17"}]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
schedulesYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It clearly discloses that this mutates the Garmin Connect calendar, and it explains the upload-then-schedule behavior for inline workout_data, plus the conditional requirement between workout_id and workout_data. It does not address duplicate scheduling or overwrite behavior, but the core mutation behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a front-loaded action statement, a brief explanation of the two modes, bulleted argument details, and illustrative examples. Every sentence adds value and the examples clarify the conditional parameter logic without unnecessary verbosity.

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?

Given the opaque schema and absence of annotations, the description is nearly complete: it covers the operation, all parameter semantics, conditional logic, and examples. An output schema exists so return-value details are not required. Minor gaps include not specifying behavior when a date already has a scheduled workout, limits on batch size, and deferring workout_data details to upload_workout.

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?

The input schema is essentially opaque: it only defines 'schedules' as an array of empty objects with additionalProperties allowed, giving 0% schema coverage. The description fully compensates by documenting the expected fields, types, required conditions, date format, and the relationship between workout_id and workout_data, reinforced with concrete JSON examples.

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?

The description opens with a concrete verb and resource: 'Schedule multiple workouts to specific calendar dates.' It further clarifies 'adds workouts to your Garmin Connect calendar in a single call,' which distinguishes it from singular scheduling tools like schedule_workout and from upload-only tools like upload_workout.

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?

The description clearly establishes the batch scheduling context and explains the two scheduling modes: referencing existing workouts by ID or providing inline workout_data. However, it does not explicitly state 'use this instead of schedule_workout when scheduling multiple workouts' or describe when not to use it, though the 'single call' phrasing implies this.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JJRPF/garmin_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server