gym&tonic
← Back to Gym & Tonic

WebMCP site tools

A coach that asks first.

17 browser tools let a compatible coach understand your week and suggest changes without taking control.

13

Read tools

A coach can inspect the week, balance, gear, progress, and local history.

4

Proposal tools

Changes are staged on your board for a human decision.

0

Silent changes

A coach cannot quietly alter your plan or mark your workout complete.

The permission model

Inspect freely. Propose clearly. You approve every plan change.

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 planner

Tool directory

What your coach can do

Schemas are available for technical clients.

get_week_plan

Read only

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.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

list_exercises

Read only

Exercise catalogue filtered by muscle group (legs/push/pull/core/cardio/mobility) or equipment. Returns ids for read_exercise and propose_session.

View input schema
{
  "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
}

read_exercise

Read only

Full entry for one exercise id: form cues, duration, required equipment.

View input schema
{
  "type": "object",
  "properties": {
    "exerciseId": {
      "type": "string"
    }
  },
  "required": [
    "exerciseId"
  ],
  "additionalProperties": false
}

check_balance

Read only

Minutes per muscle group this week, neglected groups, and a verdict with attitude. Use it before proposing sessions so the week ends up balanced.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

aggregate_gear

Read only

One deduplicated equipment list across all planned sessions — the gym-bag checklist.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

suggest_session

Read only

Generates a session for a focus group without touching the board. Returns the full session object; use propose_session to actually place it.

View input schema
{
  "type": "object",
  "properties": {
    "focus": {
      "type": "string",
      "enum": [
        "legs",
        "push",
        "pull",
        "core",
        "cardio",
        "mobility"
      ]
    },
    "intensity": {
      "type": "string",
      "enum": [
        "light",
        "moderate",
        "brutal"
      ]
    }
  },
  "required": [
    "focus"
  ],
  "additionalProperties": false
}

propose_session

Approval required

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.

View input schema
{
  "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
}

swap_sessions

Approval required

Proposes exchanging the contents of two occupied slots. Staged for approval.

View input schema
{
  "type": "object",
  "properties": {
    "slotA": {
      "type": "string"
    },
    "slotB": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "slotA",
    "slotB",
    "summary"
  ],
  "additionalProperties": false
}

clear_slot

Approval required

Proposes clearing a slot — rest is programming too. Staged for player approval with their reason attached.

View input schema
{
  "type": "object",
  "properties": {
    "slot": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "slot",
    "summary"
  ],
  "additionalProperties": false
}

fill_week

Approval required

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.

View input schema
{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "Your reasoning, e.g. 'Legs and cardio are neglected — filled with those.'"
    }
  },
  "required": [
    "summary"
  ],
  "additionalProperties": false
}

overload_report

Read only

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.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

get_progress

Read only

Returns planned versus completed sessions and minutes, consistency, streak, covered groups, and lightweight guidance.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

get_training_history

Read only

Returns locally stored weekly training history, including planned sessions, completed sessions, minutes, and reflections.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

list_templates

Read only

Returns the locally saved weekly rhythms available to the player. Templates are never applied by an agent.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

get_calendar_plan

Read only

Returns the current planned sessions as calendar-ready event details and an iCalendar export string. It does not create or send calendar events.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

get_fitness_preferences

Read only

Returns non-sensitive fitness preferences so a coach can tailor suggestions. Private weight entries are never included.

View input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

list_meal_ideas

Read only

Returns shared meal ideas filtered by a dietary preference or search term. Suggestions are informational and contain no personal food log.

View input schema
{
  "type": "object",
  "properties": {
    "dietaryPreference": {
      "type": "string",
      "enum": [
        "omnivore",
        "vegetarian",
        "vegan",
        "pescatarian"
      ]
    },
    "search": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}