Skip to main content
Glama
Packi1992

CalisthenicsCompanion-MCP

by Packi1992

Propose Plan Update

propose_plan_update
Idempotent

Propose a workout template change for coach review. Submit an ops diff for classic templates or full formatParams for structured formats; the proposal is queued for accept/reject without direct mutation.

Instructions

Propose a structural change to an existing workout template for human review. Against a CLASSIC template, pass an ops[] diff (add/remove/update-sets-reps/reorder). Against a format template (CIRCUIT/EMOM/AMRAP/TABATA/LADDER/FOR_TIME/CHIPPER/DEATH_BY — check get_template's workoutType), pass formatParams instead: the complete new authoring parameters for that format, never an ops[] diff — the compiled rows are recomputed from formatParams on every save and an ops[] diff against them would be silently discarded. Exactly one of ops/formatParams may be set. Never mutates directly — the proposal is transported to the coach inbox for accept/reject. Fast-fails with an error (no network call) if the templateId is not found in the local snapshot, or if the proposal shape does not match the target template's own format. Inline newExercises[] entries that match an existing catalog exercise are automatically resolved to that catalog UUID instead of being proposed as duplicates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opsNo
rationaleYes
templateIdYes
formatParamsNo
newExercisesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A5/5.0
Behavior5/5

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

The description goes well beyond the annotations by revealing non-obvious behavior: the call never mutates directly, proposals go to a coach inbox, format rows are recomputed from formatParams so ops[] diffs would be silently discarded, validation fast-fails without a network call, and catalog-matching new exercises are auto-resolved to UUIDs. No statement contradicts the annotations.

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 dense but every sentence adds operational value: the main purpose is front-loaded, conditional usage is sequenced logically, and the consequences of misusing formatParams and ops[] are explained without repetition. The length is justified by the tool's complexity.

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?

Given the complexity, the absence of an output schema, and minimal annotations, the description covers the essential selection, invocation, and behavior of the tool: parameter choice, mutation semantics, error fast-fails, and the human-review outcome. The only lightly covered required parameter is rationale, but its purpose is self-evident and the schema already marks it required.

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?

With schema description coverage at 0%, the description carries the parameter-meaning burden and does so thoroughly. It explains the central parameter choice (ops vs formatParams), the exact constraint that only one may be set, the meaning of newExercises[] resolution, and the need to reference get_template.workoutType to determine which parameter group applies.

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 specific verb and resource: 'Propose a structural change to an existing workout template for human review.' It immediately distinguishes the proposal role from direct mutation and clarifies the two operation modes (ops[] diff for CLASSIC templates, formatParams for format templates), which helps an agent select it correctly among the propose_* siblings.

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

Usage Guidelines5/5

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

Usage guidance is explicit and conditional: use ops[] only against CLASSIC templates, use formatParams only against format templates, never pass ops[] to a format template, and set exactly one of ops/formatParams. It also tells the agent to check get_template's workoutType and describe failure modes such as fast-failing on a missing templateId or shape mismatch.

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