Skip to main content
Glama

MoveMate: Gym Workout Tracker

Create planned workout

create_planned_workout

Schedules a planned workout in the app on a chosen date. Every exercise_id must come from search_exercises or create_custom_exercise — never invented. Not safe to blindly retry: client_request_id makes retries safe — a repeat call with the same ID returns the existing workout instead of creating a duplicate. Supersets and circuits are set with the superset_group label on each exercise — see that field for the rule it requires. A workout can mix strength and conditioning freely: each exercise is measured by its own exercise_type (from search_exercises), so a run, a skipping round or a set of sprints sits in the same list as the lifts — send the targets that type accepts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoOptional note for the whole session, shown in the app. Max 500 characters.
titleYesWorkout name shown in the app calendar, e.g. "Push day". Max 60 characters.
reminderNoPush reminder for this session, as an offset before it starts — "oneHour" is one hour before, "thisDay" fires at the workout time itself. Send it ONLY when the user asks to be reminded: leaving it out means no reminder, which is what the app itself does by default. Needs a time in scheduled_for; a date-only session cannot carry a reminder.
exercisesYesThe exercises in the order they are performed — at least one.
scheduled_forYesISO 8601 date or datetime as local wall-clock time in the user's own timezone, with NO offset — '2026-08-29' or '2026-08-29T21:00:00' for 9pm where the user lives. A trailing 'Z' or numeric offset is accepted and converted, but plain local time is preferred: it is what the user means and cannot drift a day.
client_request_idNoIdempotency key. Generate a NEW unique value (e.g. a UUID) for each new workout, and reuse the SAME value when retrying a call that may already have succeeded — a repeat with the same value returns the existing workout instead of creating a duplicate.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYes
localeYes
web_urlYes
warningsNo
deep_linkYes
total_setsYes
workout_idYes
scheduled_forYes
exercise_countYes
display_warningsNo
estimated_duration_minYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnly=false, idempotent=false, destructive=false; the description goes well beyond that with the idempotency key mechanics, the superset adjacency constraint and pointer to the field rule, and the fact that strength and conditioning exercises can be mixed and are measured by their own exercise_type. This is behaviorally rich, non-duplicative context for a mutation tool.

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 with the purpose, then a sequence of one-rule-per-sentence statements that all earn their place (idempotency, superset rule, type mixing). It is dense rather than padded, though a few points repeat schema text verbatim and could have been trimmed.

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?

With an output schema present, the description correctly avoids explaining return values and instead covers the things structured data cannot: idempotent retry behavior, superset grouping constraints, mixed-modality workouts, and unit/type expectations. Nothing an agent needs to invoke this correctly appears to be 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%, so the baseline is 3; the description nonetheless adds cross-field semantics the schema states only per-field — e.g. that each exercise carries its own exercise_type and that only the targets that type accepts should be sent, and that superset membership is governed by the superset_group rule. Some of its parameter content (exercise_id provenance, superset labels) duplicates what the schema already says, keeping it below a 5.

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?

States a specific verb and resource with scope: "Schedules a planned workout in the app on a chosen date." It also names the required upstream tools (search_exercises, create_custom_exercise) for exercise_id, which helps an agent locate the tool in a workflow. It does not explicitly distinguish itself from update_planned_workout or list_planned_workouts, so it stops short of full sibling differentiation.

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?

Gives concrete preconditions and alternatives: exercise_id must come from search_exercises or create_custom_exercise and never be invented, and it explains the retry policy (reuse the same client_request_id rather than blindly retrying). It does not state when to prefer update_planned_workout over creating a new session, which is the one obvious sibling decision left unaddressed.

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