← WebMCP Directory

Tool tree

blockbuilder-jet.vercel.app

Health & EducationTools verified
Website
Repair a training plan when real life gets in the way—without moving the commitments you protected.
Explore capabilities
    get_planAnswer

    Call this first before planning, repairing, or editing. The athlete may have changed the live calendar since your last call. Returns the complete profile, sessions and lock state, metrics, flags, highlights, and any repair already awaiting approval.

    View tool JSON
    {
      "name": "get_plan",
      "kind": "answer",
      "impl": "imperative",
      "description": "Call this first before planning, repairing, or editing. The athlete may have changed the live calendar since your last call. Returns the complete profile, sessions and lock state, metrics, flags, highlights, and any repair already awaiting approval.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      }
    }
    get_metricsAnswer

    Read the current weekly load, week-over-week change, Foster monotony, strain, deload checks, and safety flags without fetching every session. Use after the athlete asks whether the block still works.

    View tool JSON
    {
      "name": "get_metrics",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current weekly load, week-over-week change, Foster monotony, strain, deload checks, and safety flags without fetching every session. Use after the athlete asks whether the block still works.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      }
    }
    propose_changesAction

    Preferred tool for replanning after a missed session, schedule conflict, fatigue, pain, travel, or changed priority. Read the current plan first, then submit the smallest useful set of changes. This simulates the result and shows the athlete an approval card; it does not alter the calendar. Never include a locked session—work around it instead.

    View tool JSON
    {
      "name": "propose_changes",
      "kind": "act",
      "impl": "imperative",
      "description": "Preferred tool for replanning after a missed session, schedule conflict, fatigue, pain, travel, or changed priority. Read the current plan first, then submit the smallest useful set of changes. This simulates the result and shows the athlete an approval card; it does not alter the calendar. Never include a locked session—work around it instead.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "rationale": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "changes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "enum": [
                    "add",
                    "update",
                    "move",
                    "remove"
                  ]
                },
                "id": {
                  "type": "string",
                  "minLength": 1
                },
                "week": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 4
                },
                "day": {
                  "type": "string",
                  "enum": [
                    "Mon",
                    "Tue",
                    "Wed",
                    "Thu",
                    "Fri",
                    "Sat",
                    "Sun"
                  ]
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "strength",
                    "power",
                    "technique",
                    "speed",
                    "conditioning",
                    "mobility",
                    "rest"
                  ]
                },
                "title": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                },
                "rpe": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 10
                },
                "duration_min": {
                  "type": "integer",
                  "minimum": 5,
                  "maximum": 300
                },
                "notes": {
                  "type": "string",
                  "maxLength": 500
                }
              },
              "required": [
                "operation"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 12
          }
        },
        "required": [
          "summary",
          "rationale",
          "changes"
        ],
        "additionalProperties": false
      }
    }
    set_profileAction

    Partially update the athlete profile. Preserve fields the athlete did not ask to change. Returns current weekly loads and flags because availability changes can create conflicts.

    View tool JSON
    {
      "name": "set_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Partially update the athlete profile. Preserve fields the athlete did not ask to change. Returns current weekly loads and flags because availability changes can create conflicts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sport": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "goal": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "event_date": {
            "type": "string",
            "format": "date"
          },
          "days_available": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri",
                "Sat",
                "Sun"
              ]
            },
            "uniqueItems": true,
            "minItems": 1
          },
          "constraints": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "maxItems": 20
          }
        },
        "required": [],
        "additionalProperties": false
      }
    }
    set_week_focusAction

    Set the periodization focus and human-readable intent for one week. Use before adding that week's sessions so the calendar explains the load shape. Returns current loads and flags.

    View tool JSON
    {
      "name": "set_week_focus",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the periodization focus and human-readable intent for one week. Use before adding that week's sessions so the calendar explains the load shape. Returns current loads and flags.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "week": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "focus": {
            "type": "string",
            "enum": [
              "accumulation",
              "intensification",
              "realization",
              "deload",
              "taper"
            ]
          },
          "intent": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          }
        },
        "required": [
          "week",
          "focus",
          "intent"
        ],
        "additionalProperties": false
      }
    }
    add_sessionAction

    Immediately add one training session. For repair or replanning requests, prefer propose_changes so the athlete can inspect and approve the full patch. A cell holds at most three sessions.

    View tool JSON
    {
      "name": "add_session",
      "kind": "act",
      "impl": "imperative",
      "description": "Immediately add one training session. For repair or replanning requests, prefer propose_changes so the athlete can inspect and approve the full patch. A cell holds at most three sessions.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "week": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "day": {
            "type": "string",
            "enum": [
              "Mon",
              "Tue",
              "Wed",
              "Thu",
              "Fri",
              "Sat",
              "Sun"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "strength",
              "power",
              "technique",
              "speed",
              "conditioning",
              "mobility",
              "rest"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "rpe": {
            "type": "number",
            "minimum": 1,
            "maximum": 10
          },
          "duration_min": {
            "type": "integer",
            "minimum": 5,
            "maximum": 300
          },
          "notes": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "week",
          "day",
          "type",
          "title",
          "rpe",
          "duration_min"
        ],
        "additionalProperties": false
      }
    }
    update_sessionAction

    Immediately update one session. For repair or replanning requests, prefer propose_changes. Never use this to move a session; use move_session. Locked sessions reject the change.

    View tool JSON
    {
      "name": "update_session",
      "kind": "act",
      "impl": "imperative",
      "description": "Immediately update one session. For repair or replanning requests, prefer propose_changes. Never use this to move a session; use move_session. Locked sessions reject the change.",
      "inputSchema": {
        "type": "object",
        "minProperties": 2,
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "strength",
              "power",
              "technique",
              "speed",
              "conditioning",
              "mobility",
              "rest"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "rpe": {
            "type": "number",
            "minimum": 1,
            "maximum": 10
          },
          "duration_min": {
            "type": "integer",
            "minimum": 5,
            "maximum": 300
          },
          "notes": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
    move_sessionAction

    Immediately move one session. For repair or replanning requests, prefer propose_changes. Check capacity and lock state; a locked commitment must be worked around.

    View tool JSON
    {
      "name": "move_session",
      "kind": "act",
      "impl": "imperative",
      "description": "Immediately move one session. For repair or replanning requests, prefer propose_changes. Check capacity and lock state; a locked commitment must be worked around.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "week": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "day": {
            "type": "string",
            "enum": [
              "Mon",
              "Tue",
              "Wed",
              "Thu",
              "Fri",
              "Sat",
              "Sun"
            ]
          }
        },
        "required": [
          "id",
          "week",
          "day"
        ],
        "additionalProperties": false
      }
    }
    remove_sessionAction

    Immediately remove one session. For repair or replanning requests, prefer propose_changes. Locked sessions reject removal because only the athlete can change them.

    View tool JSON
    {
      "name": "remove_session",
      "kind": "act",
      "impl": "imperative",
      "description": "Immediately remove one session. For repair or replanning requests, prefer propose_changes. Locked sessions reject removal because only the athlete can change them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
    highlightAction

    Gesture at sessions or whole weeks in the visible planner while explaining a risk, tradeoff, or recommendation. Each call replaces the prior highlight. Omit both arrays to clear the visual emphasis after your message is resolved.

    View tool JSON
    {
      "name": "highlight",
      "kind": "act",
      "impl": "imperative",
      "description": "Gesture at sessions or whole weeks in the visible planner while explaining a risk, tradeoff, or recommendation. Each call replaces the prior highlight. Omit both arrays to clear the visual emphasis after your message is resolved.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "uniqueItems": true,
            "maxItems": 20
          },
          "weeks": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4
            },
            "uniqueItems": true,
            "maxItems": 4
          },
          "message": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          }
        },
        "required": [
          "message"
        ],
        "additionalProperties": false
      }
    }