13
Read tools
A coach can inspect the week, balance, gear, progress, and local history.
WebMCP site tools
17 browser tools let a compatible coach understand your week and suggest changes without taking control.
13
A coach can inspect the week, balance, gear, progress, and local history.
4
Changes are staged on your board for a human decision.
0
A coach cannot quietly alter your plan or mark your workout complete.
The permission model
Tools only exist while you have Gym & Tonic open in a compatible client. They do not create an account, run in the background, or take ownership of your training.
Open plannerTool directory
Schemas are available for technical clients.
Returns the current training week: every filled slot (day 0-6 = Mon-Sun, am/pm) with session title, focus group, intensity and minutes. Call first to orient.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Exercise catalogue filtered by muscle group (legs/push/pull/core/cardio/mobility) or equipment. Returns ids for read_exercise and propose_session.
{
"type": "object",
"properties": {
"group": {
"type": "string",
"enum": [
"legs",
"push",
"pull",
"core",
"cardio",
"mobility"
]
},
"equipment": {
"type": "string",
"description": "Filter to exercises usable with this equipment, e.g. 'barbell'."
}
},
"required": [],
"additionalProperties": false
}Full entry for one exercise id: form cues, duration, required equipment.
{
"type": "object",
"properties": {
"exerciseId": {
"type": "string"
}
},
"required": [
"exerciseId"
],
"additionalProperties": false
}Minutes per muscle group this week, neglected groups, and a verdict with attitude. Use it before proposing sessions so the week ends up balanced.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}One deduplicated equipment list across all planned sessions — the gym-bag checklist.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Generates a session for a focus group without touching the board. Returns the full session object; use propose_session to actually place it.
{
"type": "object",
"properties": {
"focus": {
"type": "string",
"enum": [
"legs",
"push",
"pull",
"core",
"cardio",
"mobility"
]
},
"intensity": {
"type": "string",
"enum": [
"light",
"moderate",
"brutal"
]
}
},
"required": [
"focus"
],
"additionalProperties": false
}Stages placing a session into an empty slot (format '0-am'..'6-pm', day 0=Mon). Pending until the player approves on the grid. Prefer suggesting refuels too via the session's refuel field.
{
"type": "object",
"properties": {
"slot": {
"type": "string",
"pattern": "^[0-6]-(am|pm)$"
},
"focus": {
"type": "string",
"enum": [
"legs",
"push",
"pull",
"core",
"cardio",
"mobility"
]
},
"intensity": {
"type": "string",
"enum": [
"light",
"moderate",
"brutal"
]
},
"summary": {
"type": "string",
"description": "Why this session here, e.g. 'Legs are neglected by Wednesday.'"
}
},
"required": [
"slot",
"focus",
"summary"
],
"additionalProperties": false
}Proposes exchanging the contents of two occupied slots. Staged for approval.
{
"type": "object",
"properties": {
"slotA": {
"type": "string"
},
"slotB": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"slotA",
"slotB",
"summary"
],
"additionalProperties": false
}Proposes clearing a slot — rest is programming too. Staged for player approval with their reason attached.
{
"type": "object",
"properties": {
"slot": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"slot",
"summary"
],
"additionalProperties": false
}Analyzes balance, then stages ONE proposal that fills every empty weekday-evening slot (Mon-Fri PM) with sessions chosen to cover neglected muscle groups. The player approves or rejects the whole week at once. Prefer check_balance first so your summary explains the choices.
{
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "Your reasoning, e.g. 'Legs and cardio are neglected — filled with those.'"
}
},
"required": [
"summary"
],
"additionalProperties": false
}Compares this week's minutes per muscle group against recorded history (previous weeks stored on-device). Returns per-group deltas with advice and a headline. Use it to ground progression claims before proposing sessions.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns planned versus completed sessions and minutes, consistency, streak, covered groups, and lightweight guidance.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns locally stored weekly training history, including planned sessions, completed sessions, minutes, and reflections.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns the locally saved weekly rhythms available to the player. Templates are never applied by an agent.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns the current planned sessions as calendar-ready event details and an iCalendar export string. It does not create or send calendar events.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns non-sensitive fitness preferences so a coach can tailor suggestions. Private weight entries are never included.
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Returns shared meal ideas filtered by a dietary preference or search term. Suggestions are informational and contain no personal food log.
{
"type": "object",
"properties": {
"dietaryPreference": {
"type": "string",
"enum": [
"omnivore",
"vegetarian",
"vegan",
"pescatarian"
]
},
"search": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}