{"ok":true,"site":{"host":"blockbuilder-jet.vercel.app","url":"https://blockbuilder-jet.vercel.app/","type":"live","desc":"Repair a training plan when real life gets in the way—without moving the commitments you protected.","tools":[{"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.","title":"Get training plan","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Get block metrics","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Propose a plan repair","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Update athlete profile","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Set week focus","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add training session","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Update training session","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Move training session","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Remove training session","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Highlight plan details","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","favicon":"/favicons/blockbuilder-jet.vercel.app.svg","apiSurface":"spec","toolCount":10}}