Skip to main content
Glama

Get coaching context

get_coaching_context
Read-only

This user's training data for planning a workout (task next_workout), building a program (new_program), reviewing the week (weekly_review), checking for a deload (deload_check), a periodic check-in (checkin) or the intake (intake). Returns data only:

  • task and requested_task: while the intake is incomplete a next_workout or new_program request is answered with the intake's data, so task is 'intake' and requested_task keeps the task asked for. weekly_review, checkin and deload_check are answered with the data there is, and intake.note says the profile is unfilled.

  • intake: {complete, status, next_field, next_fields, next_field_options, next_fields_options, remaining}: next_fields are the empty topics of the current intake step, which one message covers together, and next_field the first of them; the options are the values each enumerated topic accepts; remaining counts every empty topic. complete needs the six core topics (experience, days per week, locations, equipment, health screening, goal); sex, age and body weight are optional. While it is false a next_workout or new_program request gets no training data and intake_required is true.

  • safety: {screening_status, medical_clearance_advised, parq_flags, active_injury_areas, injuries, injury_map_basis}. screening_status is 'not_assessed' while the health questions were never answered, and medical_clearance_advised is then null, not false: no screening is not a clean screening. Each of injuries is {area, note, loads, catalog_exercises_loading_it}: loads is the body region the area names with the movement patterns and primary muscles that load it (null when the area cannot be placed), and the list names the user's own exercises with that pattern or muscle. injury_map_basis states that the map is a heuristic, not a diagnosis; an exercise it does not flag is not thereby cleared.

  • goal_candidates (when the user has no active goal): unsaved goals computed from the profile and recent lifts in upsert_goal's shape, ratified=false, each with its basis; how many depends on what the profile holds.

  • user_profile, goals (the featured goal carries a computed progress block), reply_language.

  • planning_parameters: numeric ranges for the user's primary goal (weekly hard sets per muscle, reps per set, reps in reserve, rest, progression step); for a home or outdoor profile also without_added_load (the reps range and the order of progression levers when no weight can be added).

  • first_session_load_estimates (next_workout / new_program): first working weights for an exercise with no logged history, from sex and body weight, for a calibration start, only for the kit the user has (all kits when equipment is unknown), with basis.

  • training_data: sessions this week vs target, consistency_level (the 0-8 level the app shows as a flame, relative to the user's own rhythm), days since the last session, recent_sessions (logged_in_app=true means the app recorded it set by set and it is already stored), recent_lifts (last working sets per exercise: weight, reps, seconds or metres as logged), active_program (days and who last edited them), exercise_catalog (the user's exercise ids), weekly_sets_by_muscle (direct and assisted sets in the last 7 days against MEV/MAV landmarks; the landmarks are stated in direct sets; chest and traps are judged whole, their regions carry part_of and no band) and residual_load_by_muscle (pct_of_hard_session: how much of one hard session's work on that muscle has not yet faded, relative to this user's own hard sessions; fades_in_h: when it will have; a tally of work done, not a measure of recovery or readiness).

  • pending_program_draft (inside training_data, when one waits): {saved_at, name, days} of the program draft that passed review_program_draft and waits for the user in the AIm app; the document itself is in get_program's pending_draft.

  • activities (when the user has any): {items, note}. Each item is one of the user's own activities (football, swimming, …) with days it was marked in the last 28 days and, when set, goal {direction at_least|at_most, days_per_week, days_this_week, set_by}. An unmarked day is unknown, not a day without it; counts are days, not times or amounts; activities are not workouts and are in none of the training_data numbers (residual load, weekly sets). Private activities are never included.

  • todays_constraints: the constraints argument, echoed.

task defaults to 'next_workout'. 'check_in' is accepted as an alias of 'checkin'. constraints is for TODAY-ONLY circumstances ("only 30 minutes", "gym closed, training at home"); they are not saved to the profile, durable facts are stored with update_coach_profile. today is the current date in the user's timezone, YYYY-MM-DD (today's date, not the day being planned), as for a session's date: everything here is anchored on which day it is for them, and the server's clock is UTC. When it is omitted the server uses the timezone stored from the web app, or UTC when none is stored, which can shift the weekly and muscle numbers by a day.

Input Schema

NameRequiredDescriptionDefault
taskNonext_workout
todayNo
constraintsNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / today
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Beyond readOnly and non-destructive annotations, the description discloses important behavior: intake fallback for next_workout/new_program, intake_required semantics, safety screening caveats, heuristic injury mapping, residual load limitations, private activity exclusion, and timezone-dependent date handling. This is unusually rich behavioral context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and organized with bullets, but it is very long and describes many return fields in detail even though an output schema exists. Much of that detail adds nuance, but the definition is over-sized and could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, zero schema parameter descriptions, and the many modes it supports, the description is complete enough for an agent to select a task, pass constraints and today correctly, and understand key return semantics. The output schema exists, but the extra behavioral nuance is not harmful to completeness.

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

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, and it does: it explains every task enum value, the default, the check_in alias, constraints as today-only and non-persistent, and the today date format/default timezone behavior. This fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource, the user's training data, and enumerates the coaching tasks it supports (next_workout, new_program, weekly_review, deload_check, checkin, intake). It clearly distinguishes this aggregate coaching-context tool from granular CRUD siblings, though it does not explicitly name alternatives like get_stats or get_sessions.

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?

It gives clear usage contexts through the task list and explains that constraints are for today-only circumstances, with durable facts redirected to update_coach_profile. It does not provide explicit when-not-to-use guidance or name most sibling alternatives, but the intended use is clear.

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.