Skip to main content
Glama
sla1k
by sla1k

smartgym_create_program

Destructive

Create and sync one or more SmartGym routines with warmups, exercises, cooldowns, days, and sets; preview changes with dry-run before sending to all devices.

Instructions

Create one or more routines (a program) on the SmartGym server — all devices get them.

Each routine: name (must not match an active routine), optional days/goal/note, and three ordered sections — warmup (optional), exercises (= main, required), cooldown (optional). Exercises are catalog names (fuzzy-matched, deterministic) or catalog ids, with optional rest_seconds, note and template sets (reps + weight_kg; omitted = one 1x10 set, flagged). days is comma-separated weekday numbers, 1 = Sunday, 2 = Monday … 7 = Saturday (e.g. "2,4,6"). Validation is all-or-nothing. dry_run=true (default) returns the plan and sends NOTHING; dry_run=false creates the routines and verifies them on the server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNo
routinesYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
planYes
noticeYes
createdYes
dry_runYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, but the description adds substantial context beyond them: all-or-nothing validation, the dry-run-first safety workflow, deterministic fuzzy matching of exercise names, and the flagged default set when sets are omitted. This is exactly the kind of behavioral disclosure that reduces accidental destructive calls.

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 core action and outcome, then proceeds into parameter detail in a logical order. It is dense and somewhat long, but nearly every clause carries payload (validation mode, day encoding, default-set flagging) rather than filler. Minor tightening could still help, so not a full 5.

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 need not document return values, and it correctly focuses on inputs and behavior. For a nested, multi-routine mutation tool with rich annotations, it covers validation, dry-run semantics, name-uniqueness, and section ordering fully — nothing an agent needs to call it correctly is missing.

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?

Top-level schema coverage is effectively 0% (dry_run and routines carry no inline descriptions), so the description must carry the burden and does: it explains dry_run semantics, the routines structure, required name uniqueness, the optional days/goal/note fields, and the weekday numbering scheme (1=Sunday…7=Saturday). It adds real semantic meaning for nested specs (exercise fuzzy-match, rest_seconds, sets defaults) beyond what the schema offers.

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 specific verb+resource ('Create one or more routines (a program) on the SmartGym server') and immediately distinguishes scope ('all devices get them'), which separates it cleanly from update_routine, add_exercise, and the other routine-mutating siblings. An agent can identify the create-vs-update boundary without opening any schema.

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 gives strong operational guidance: dry_run=true is the default and 'sends NOTHING', while dry_run=false actually creates and verifies on the server, and validation is all-or-nothing. It stops short of naming sibling alternatives (e.g. when to use update_routine instead), so it is clear context without explicit exclusions.

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