Skip to main content
Glama

create_workout

Build a custom Speediance workout template with ordered exercises, sets, reps, weights, and rest times for personalized training plans.

Instructions

Create a custom workout template. exercises is an ordered list of {"name": "..." or "group_id": N, "sets": [...], "rest_seconds": 60}. Sets by movement kind: reps -> {"reps": 10, "weight": 50}; timed -> {"seconds": 45}; Vita (level) -> {"seconds": 30, "level": 12}. Optional per set: "side" 1=left / 2=right (unilateral moves alternate automatically), "rest". Weights are in displayUnit. The template is read back after saving; verified:false means Speediance stored something different — tell the user. Never program a ⊘avoided movement unless asked by name. The reply carries the user's hardConstraints and legacyUnreviewed facts when there are any. Re-check these against the workout before telling the user it's done.

Input Schema

NameRequiredDescriptionDefault
nameYes
exercisesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/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 burden and delivers: it discloses read-back verification, the meaning of verified:false, and that the reply carries hardConstraints and legacyUnreviewed facts requiring re-check. It omits permission/auth requirements and reversibility, but the post-save behavior disclosure is unusually rich.

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 one-line purpose, then dense, purposeful detail on structure and post-conditions. Every clause adds information; the embedded JSON snippets and ⊘ symbol make it slightly cramped, but nothing is wasted.

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?

For a tool with no annotations and no output schema, the description supplies the create contract, verification semantics, and key return fields. It is largely self-sufficient; only auth/permission context is missing, which is minor here.

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 0%, so the description must compensate, and it does so thoroughly for `exercises`: object shape, set formats by movement kind (reps/timed/Vita), optional side/rest fields, and weight units. Only `name` is left unexplained, which is trivially inferable, keeping this just short of exemplary.

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+resource: 'Create a custom workout template.' This clearly distinguishes it from read/list siblings, but it does not explicitly differentiate itself from update_workout or schedule_workout, leaving the create-vs-schedule boundary implicit.

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?

Provides some in-flight guidance ('Never program a ⊘avoided movement unless asked by name', verify before declaring done), but gives no explicit when-to-use/when-not guidance versus siblings like update_workout or schedule_workout. Usage context is implied rather than stated.

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