Skip to main content
Glama

Rescale a draft week

rescale_draft_week
Destructive

Scale one week's total training volume in the cached plan draft, either to an absolute target_km or by percent_change (e.g. -15 for 15% lighter). Race entries stay fixed. Draft-only: changes the cached preview and nothing the athlete sees. Returns the refreshed plan; content_preview holds whole weeks from the first changed week and next_cursor continues in get_plan_draft. Only the account that created the draft can edit it.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "athlete_id": "<athlete_id>",
      "draft_id": "<draft_id>",
      "week": "<week>"
    },
    "name": "rescale_draft_week"
  }
}

Input Schema

NameRequiredDescriptionDefault
weekYesPlan week number, starting at 1.
draft_idYesdraft_id from create_training_plan or a draft edit by this account (single-use, expires 24 hours after drafting).
target_kmNoThe week's new total distance in km.
athlete_idYesThe draft's owner: the athlete for an individual draft; for a group draft, the coach's own id from get_current_user.
percent_changeNoVolume change in percent, for example -15 for lighter.

Output Schema

NameRequiredDescriptionDefault
goalNo
draftNo
errorNo
levelNo
weeksNo
statusNo
messageNo
privacyNoPresent when the athlete's settings withhold data.
draft_idNo
group_idNo
retry_atNoEpoch milliseconds; an uncharged allowance-limited job resumes on a poll at or after this instant.
warningsNo
next_stepNoWhat can be done next, for example after a failure.
operationNo
plan_nameNo
athlete_idNo
expires_atNo
group_nameNo
next_stepsNo
assumptionsNo
athlete_pbsNo
goal_sourceNo
next_cursorNoReads the next page; null on the last page.
reason_codeNo
total_weeksNo
member_countNo
retry_at_isoNoThe epoch field beside it as a UTC instant; the local day can differ.
subject_kindNo
user_contentNoFields in this result that people wrote.
changed_cellsNo
phase_outlineNo
expires_at_isoNoThe epoch field beside it as a UTC instant; the local day can differ.
missing_inputsNo
weeks_returnedNo
content_previewNo
generation_stateNoqueued, generating, ready, failed or access_revoked; only ready content is editable/saveable.
truncated_fieldsNoLists cut to fit one response: rows returned and total.
allowance_chargedNoAudit of the stable Redis reservation; retries of this job do not charge again.
duration_in_weeksNo
generated_contentNoFields in this result that NexRex's AI wrote.
weekly_mileage_kmNo
workout_preferenceNo
preferences_appliedNo
session_definitionsNoSessions that several rows of this result share by session_ref.
content_block_fieldsNoColumn names of every content_blocks row, nested blocks rows included.
recommended_start_dateNo
training_principle_org_idNo
training_principle_sourceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / $defs / Activity / properties / content_blocks / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "items": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "items": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "boolean"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "$ref": "#/$defs/LocalizedText"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "type": "array"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "items": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "items": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "number"
      +                },
      +                {
      +                  "type": "boolean"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "$ref": "#/$defs/LocalizedText"
      +          },
      +          {
      +            "items": {
      +              "type": "array"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / $defs / Activity / properties / content_blocks / description
      Previous value: -"Interval rows; each row's values follow content_block_fields."New value: +"Workout steps as rows whose values follow content_block_fields; an interval's blocks value is its nested steps as rows in the same columns."
    • changedOutput schema / properties / content_block_fields / description
      Previous value: -"Column names of every content_blocks row."New value: +"Column names of every content_blocks row, nested blocks rows included."
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: the blast radius is confined to the cached preview, published athlete-visible data is untouched, race entries are preserved, and the caller identity is constrained to the draft's creator. It also describes the return payload and how content_preview plus next_cursor continue in get_plan_draft. It does not say what happens if both target_km and percent_change are supplied or neither is.

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?

Four tight sentences, front-loaded with the core action, then the fixed-point rule, then the draft-only safety scope, then the return shape. No filler, and each clause carries operational information.

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 destructive-in-preview mutation tool with an output schema, the definition covers scope, side effects, authorization, and return continuation adequately. The remaining hole is parameter interaction — whether the two volume parameters are mutually exclusive and what the fallback is when neither is passed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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 reinforces the two volume-setting modes and the -15 example, but it adds little about the actual ambiguity in the schema — both target_km and percent_change are optional and neither is required, and the description's 'either ... or' hints at exclusivity without stating precedence.

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 precise verb and scope: 'Scale one week's total training volume in the cached plan draft', with the two operating modes (absolute target_km or percent_change) spelled out. The 'one week's total volume' scope contrasts cleanly with the workout-level siblings like edit_draft_workout, and the 'Race entries stay fixed' clause pins down exactly what is and isn't affected.

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 clear when-to-use context: it operates on the cached draft preview and nothing the athlete sees, and only the creating account can edit. It does not explicitly route the agent away from alternatives (e.g. when to rescale a whole week versus use edit_draft_workout for a single session), so it stops short of full alternative guidance.

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