Skip to main content
Glama

Server Details

Manage strength workouts and track exercise progress. Requires a LiftTrack account.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL

TDQS

A4.4/5.0

Scored across 18 tools

Disambiguation5/5

Every tool targets a distinct resource or action: workout CRUD, program reads, schedule, exercise search/validation, training maxes, and history/status queries. Even closely related tools like search_exercises and validate_exercise_names have clearly different purposes, so an agent should not confuse them.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, such as create_workout, get_workout_detail, set_training_max, and search_exercises. The naming convention is uniform and predictable across the entire set.

Tool Count4/5

At 18 tools, this is slightly over the typical 3-15 sweet spot, but the count is justified by the breadth of the domain: workout templates, programs, schedule, exercise catalog, training maxes, activities, and user settings. Each tool appears to earn its place, and there are no obvious redundant entries.

Completeness4/5

Workout templates have complete CRUD coverage, training maxes have get/set, and the read surface for activities, programs, schedule, and coaching profile is strong. Minor gaps exist around program/schedule lifecycle management and custom exercise creation, but core coaching and workout-planning workflows are well covered.

Available Tools

18 tools
create_workoutAInspect

Only call this after the user has reviewed the proposed workout (exercises, sets, loads, rest mode, supersets) and approved it. Present it for review the way your client supports and get explicit approval first: the LiftTrack app renders this tool's input as an interactive approval card the user accepts or rejects inline (no plaintext restatement needed there), while other clients should show a plaintext summary and confirm. See the server instructions for the full workflow.

Create a workout template. Use exact exercise names from search_exercises.

Each exercise: name, target (reps|time), load (weight|percent), working_rest_mode (timed|off|lap), working_rest_seconds (required when working_rest_mode is 'timed'; omit otherwise), optional warmup_sets[], optional warmup_rest_mode (required when warmup_sets is present; same allowed values as working_rest_mode), optional warmup_rest_seconds (required when warmup_rest_mode is 'timed'), working_sets[] (min 1), and an optional superset label. working_rest_mode 'off' means continue straight to the next set/exercise with no rest. 'lap' means the watch pauses until the user presses the lap button. The same rest setting applies between sets within the exercise and after the exercise's last set (the inter-exercise rest). Each set has reps (when target=reps) or seconds (when target=time), and weight (when load=weight) or percent (when load=percent), plus optional rpe. weight is in the user's units (0 = bodyweight). percent is the percentage of training max itself, e.g. 65 for 65% — pass the percentage, do NOT convert it to a weight. The server computes the weight from the user's training max, and the call fails with a clear error if the exercise has no training max set. superset is an optional short label (case-insensitive, max 16 chars). Exercises sharing a label run as one superset on the watch — at least two exercises must share a label, max 16 distinct labels per workout. Optional folder_name places the workout in that folder; if no folder has that name, one is created. Call get_folders first to reuse an existing folder.

Example with a two-exercise superset: {"name":"Push","exercises":[{"name":"Barbell Bench Press","target":"reps","load":"weight","working_rest_mode":"timed","working_rest_seconds":90,"working_sets":[{"reps":5,"weight":185}],"superset":"A"},{"name":"Cable Row","target":"reps","load":"weight","working_rest_mode":"lap","working_sets":[{"reps":8,"weight":80}],"superset":"A"}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
exercisesYes
folder_nameNoOptional folder to place the workout in. The folder is created if no folder has this name. Call get_folders to see existing folders.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
set_countYes
folder_nameNo
exercise_countYes
folder_createdYes

TDQS

A5/5.0
Behavior5/5

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

The description goes well beyond the minimal annotations by explaining important behaviors: percent is passed as a percentage and the server computes weight, a missing training max produces a clear error, rest modes have precise meanings, and an unknown folder_name causes a new folder to be created. These are the kind of side effects and failure modes an agent needs to know before calling.

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

Conciseness5/5

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

The description is long, but every section earns its place: an approval gate up front, then parameter rules, then a concrete example. The structure is dense and scannable, and the example clarifies the conditional relationships better than prose alone would.

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 conditional complexity, the description is unusually complete. It covers prerequisites, required vs optional fields, server-side behavior, error conditions, and side effects, while the output schema handles the return shape. An agent has enough information to build a valid payload and to know when not to call the tool.

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?

Even though schema description coverage is only 33%, the description compensates thoroughly. It explains conditional requirements (working_rest_seconds only with 'timed'), the meaning of weight=0 as bodyweight, the critical distinction between percent and computed weight, superset grouping constraints, and includes a full example JSON payload.

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

Purpose5/5

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

The description clearly states the action ('Create a workout template') and the resource domain, and then adds enough specific detail about exercises, sets, and rest modes to make the tool's purpose unambiguous. It is easily distinguished from siblings like update_workout, delete_workout, and get_workout_templates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when the tool may be called: only after the user has reviewed and approved the proposed workout. It also gives concrete workflow guidance, such as using exact exercise names from search_exercises and calling get_folders first to reuse an existing folder.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_workoutA
DestructiveIdempotent
Inspect

Permanently delete a workout template. This cannot be undone. Deleting a workout also removes it from any schedules and from the user's Garmin device. Always confirm with the user before calling: state the exact workout name (and its folder, if any) and get explicit approval.

Args: workout_name: Exact workout template name (case insensitive). folder_name: Optional folder name, used to disambiguate when several workouts share the name. Use "My Workouts" for a workout not in any folder.

If several workouts share the name, the call fails and lists each match with its folder; ask the user which one they mean and retry with folder_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_nameNoFolder that holds the workout, to disambiguate duplicate names. Use "My Workouts" for a workout not in any folder.
workout_nameYesThe exact name of the workout template to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
folder_nameNo
workout_nameYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses that deletion is irreversible ('This cannot be undone'), cascades to schedules and the user's Garmin device, and fails when duplicates exist, listing matches for disambiguation. It also mandates a user-confirmation protocol. This is rich behavioral context that annotations alone do not provide.

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

Conciseness5/5

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

The description is front-loaded with the most critical facts (permanence, irreversibility, cascade) and then structured around user confirmation, arguments, and duplicate handling. Each section is purposeful; no filler or repetition beyond reinforcing the irreversibility.

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?

For a destructive tool with a required confirmation step and ambiguity handling, the description covers prerequisites, argument semantics, failure mode, and retry guidance. An output schema exists, so return values need no explanation. There are no significant missing pieces for an agent to invoke this safely.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by noting that workout_name is case insensitive, folder_name is optional and uses 'My Workouts' for un-folder workouts, and by explaining the failure/retry flow when names are ambiguous. These details go beyond the schema field descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Permanently delete a workout template.' It clearly distinguishes the action from siblings like create_workout and update_workout, and explicitly notes the cascade to schedules and the Garmin device, leaving no ambiguity about what the tool does.

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?

The description gives clear invocation context: always confirm with the user, state exact name/folder, get explicit approval before calling. It also explains how to disambiguate duplicate names and instructs to ask the user which entry is meant. It does not explicitly name alternative tools or state when not to use it, but for a delete operation the primary guardrails are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activitiesA
Read-onlyIdempotent
Inspect

Get completed workout sessions. detail='summary' (preferred for browsing) returns name, date, duration, and exercise names per activity; detail='full' adds every set performed vs target. For a single exercise's progress over time, prefer get_exercise_history instead.

Args: start_date: Start of date range (ISO format YYYY-MM-DD). Defaults to 30 days ago. end_date: End of date range (ISO format YYYY-MM-DD). Defaults to today. workout_name: Optional filter to only show activities for a specific workout. limit: Max results to return (default 10, max 100). detail: 'summary' or 'full' (default 'full').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100)
detailNo'summary' = names/dates only; 'full' = per-set detail (default)
end_dateNoEnd of date range (YYYY-MM-DD). Defaults to today.
start_dateNoStart of date range (YYYY-MM-DD). Defaults to 30 days ago.
workout_nameNoOptional filter by workout name

Output Schema

ParametersJSON Schema
NameRequiredDescription
activitiesYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description goes beyond them by clarifying that only completed workout sessions are returned and that 'full' includes sets performed vs target. No contradictions or hidden side effects are hinted at.

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

Conciseness4/5

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

The description is front-loaded with behavior and usage, then lists parameters with defaults. It is slightly redundant with the schema's parameter descriptions, but every sentence contributes either semantic context or invocation guidance, so it remains appropriately sized.

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?

With a complete input schema, output schema, and strong annotations, the description fills the remaining gaps: the completed-session scope, the detail-mode tradeoff, default date range, filters, and the get_exercise_history alternative. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds meaning by explaining what each detail mode returns and marking summary as preferred for browsing. It also reiterates defaults clearly, adding modest value over the schema alone.

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

Purpose5/5

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

The description states it "Get[s] completed workout sessions" and elaborates the two detail modes, giving a concrete verb, resource, and scope. It also distinguishes itself from get_exercise_history by directing single-exercise progress queries there, so an agent can tell tools apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises that detail='summary' is preferred for browsing and that get_exercise_history should be used "for a single exercise's progress over time." This gives both a recommended invocation style and a clear alternative condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_coach_profileA
Read-onlyIdempotent
Inspect

Get the user's saved Coach Profile: experience level, primary goal, training days per week, session length, weekly endurance hours, available equipment, liked and disliked exercises, and free text goals and limitations notes. Call this early in a coaching conversation to ground advice in the user's stated goals, schedule, and equipment. Returns an empty object when the user has not set up a profile yet.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
goals_notesNo
primary_goalNo
days_per_weekNo
training_splitNo
liked_exercisesNo
experience_levelNo
limitations_notesNo
disliked_exercisesNo
available_equipmentNo
session_length_minutesNo
weekly_endurance_hoursNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds valuable behavioral context beyond annotations by disclosing that an empty object is returned when no profile exists, which prevents the agent from misinterpreting an empty result as an error.

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

Conciseness5/5

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

The description is two sentences of dense, useful information. The first sentence lists the returned fields in a compact, scannable format. The second sentence adds usage timing and an edge-case behavior. No filler or redundancy.

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?

For a zero-parameter, read-only getter with an output schema, the description covers what is needed: what the tool returns, when to call it, and the special empty-object case. The presence of an output schema handles return structure, so no further detail is necessary.

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

Parameters4/5

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

The tool has zero parameters, so there is no schema burden on the description. The description instead clarifies what the tool returns, effectively compensating for the absence of parameter semantics. It accurately summarizes the profile contents, making the no-parameter call sensible.

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

Purpose5/5

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

The description begins with a clear verb and resource: 'Get the user's saved Coach Profile'. It enumerates the specific fields returned (experience level, primary goal, training days per week, etc.), so the agent knows exactly what this tool provides. It is distinct from all siblings, none of which claim to fetch a coach profile.

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?

The description explicitly states when to use the tool: 'Call this early in a coaching conversation to ground advice in the user's stated goals, schedule, and equipment.' It does not name alternatives or exclusions, but there are no sibling tools that provide a similar coach profile, so the guidance is sufficient for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exercise_historyA
Read-onlyIdempotent
Inspect

Get performance history for a specific exercise across sessions. Shows per-session sets, volume, estimated 1RM, and heaviest set, plus trends over time. This is the most useful tool for coaching conversations like 'How's my bench progressing?'

When a session carries a local_date, it is the day the session happened on in the user's local timezone; quote it rather than converting the UTC date field yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent sessions (default 10, max 50)
exercise_nameYesThe exercise display name (e.g. 'Barbell Bench Press')

Output Schema

ParametersJSON Schema
NameRequiredDescription
trendNo
sessionsYes
exercise_display_nameYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable non-obvious guidance: when a session has a local_date, quote it rather than converting the UTC date field. This goes beyond structured annotations and helps the agent use results correctly.

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

Conciseness5/5

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

The description is tightly written and front-loaded. Each sentence earns its place: purpose, output content, a concrete use case, and an important date-handling instruction. No filler or repetition of schema details.

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?

The tool is simple, the input schema fully documents parameters, annotations cover safety, an output schema exists, and the description adds the one behavioral subtlety (local_date handling). This is complete enough for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, with both exercise_name and limit already described in the input schema. The description provides no additional parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get performance history for a specific exercise across sessions.' It also enumerates the returned content (sets, volume, estimated 1RM, heaviest set, trends), making the tool's purpose unmistakable and distinct from sibling tools like get_training_maxes or get_workout_detail.

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 a clear usage context: 'most useful tool for coaching conversations like How's my bench progressing?' This tells an agent when to reach for it. It does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_foldersA
Read-onlyIdempotent
Inspect

List the user's workout folders with name and workout count. Call this before create_workout when the user wants the new workout placed in a folder, so you can pass an exact folder_name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
foldersYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds scoping context by saying the folders belong to the user, and it mentions the returned data includes workout count. It does not expose additional behavioral details beyond this, which is acceptable given the strong annotation coverage.

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

Conciseness5/5

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

Two concise sentences with no filler. The first sentence states the action and output, and the second explains the practical usage context. Each sentence earns its place.

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?

For a zero-parameter read-only tool with an output schema, the description is complete. It explains what the tool returns and exactly when the agent should invoke it. The annotations cover the safety profile, and the output schema covers return structure.

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

Parameters4/5

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

This tool has zero parameters, so the empty input schema is complete and the description does not need to document parameter details. It adds useful context by tying the returned folder_name to the upcoming create_workout call, which helps the agent understand how to use the result.

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

Purpose5/5

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

The description states a specific verb and resource: 'List the user's workout folders' and explicitly names the output fields ('name and workout count'). It also connects the tool to the downstream create_workout flow, making it easy to distinguish from other get_* tools.

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?

The description clearly states when to call this tool: before create_workout when the new workout should be placed in a folder, so the agent can pass an exact folder_name. It provides a clear trigger context, though it does not explicitly discuss when not to call it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_program_detailA
Read-onlyIdempotent
Inspect

Get one saved program's complete compact plan. Returns every program week without pagination. Within each week, repeated uses of the same workout_id are grouped into one item with all assigned day labels in days. The same workout_id in multiple weeks means the same saved workout is reused. Call get_workout_detail once per unique workout_id only when the user needs workout names or contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
program_idYesStable program id returned by get_programs

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
pauseNo
weeksYes
statusYes
program_idYes
total_weeksYes
current_weekNo
days_per_weekYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, so the base safety profile is covered. The description adds valuable behavioral detail beyond annotations: no pagination, grouping of repeated workout IDs within weeks, and cross-week reuse semantics. This helps the agent understand the exact response structure and implications.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then adds necessary behavioral details about pagination and grouping. Every sentence contributes meaningful information for correct invocation, and there is no redundant fluff.

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 moderate complexity, the description covers all essential aspects: the compact plan nature, full week retrieval, grouping behavior, workout reuse semantics, and the routing rule for get_workout_detail. With an output schema present, no further return-value explanation is needed.

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

Parameters3/5

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

Schema description coverage is 100%, with program_id described as the stable id returned by get_programs. The description adds little param-specific meaning beyond confirming it refers to a saved program, so the schema carries the semantic weight as expected.

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

Purpose5/5

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

The description clearly states the tool retrieves one saved program's complete compact plan, distinguishing it from program listing tools by emphasizing full plan details without pagination. It also explicitly contrasts with get_workout_detail, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance by stating to call get_workout_detail once per unique workout_id only when workout names or contents are needed. This directly routes the agent between the two sibling tools, leaving no ambiguity about which tool to select.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_programsA
Read-onlyIdempotent
Inspect

List the user's saved programs at the same summary level as LiftTrack's program cards: name, status, total weeks, current week when running, and days per week. Status is not_started, active, paused, or complete. Internal program lifecycle ids are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
programsYes

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare this a safe, read-only, idempotent operation, so the bar is lower. The description adds meaningful behavior beyond the annotations: the guarantee that internal lifecycle ids are never returned, and the specific status vocabulary. This helps the agent set expectations about the response without overpromising.

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

Conciseness5/5

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

Three short sentences with no filler. The primary action and output fields are front-loaded, the status enum is given in a compact list, and the critical exclusion (no internal IDs) is stated directly. Every sentence contributes valuable information.

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?

For a simple read-only list tool with zero parameters, an output schema, and safety annotations, the description is complete. It specifies the user scope, result granularity, included fields, status values, and a key constraint. Nothing an agent needs to decide whether to call this or interpret its result is missing.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, there is nothing for the description to explain about parameter meanings. The baseline for 0-parameter tools is 4, and the description goes further by clarifying the output semantics (the fields and statuses returned), which is useful context even though it is not strictly parameter-related.

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

Purpose5/5

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

The description states a specific verb ('List'), a clear resource ('the user's saved programs'), and a precise scope: the summary level of LiftTrack's program cards. It enumerates the exact fields returned (name, status, total weeks, current week, days per week), which fully distinguishes it from the sibling get_program_detail. This is a model of purpose clarity.

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?

The description clearly implies this tool is for summary-level program listing, not detail retrieval, and explicitly notes that internal lifecycle ids are never returned. This gives the agent enough context to know that get_program_detail is the alternative when more than the card-level summary is needed. However, it does not explicitly name a sibling or state 'use this when...' so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleA
Read-onlyIdempotent
Inspect

Get upcoming scheduled workouts, starting with today. The returned dates are plain calendar dates, exactly as scheduled.

Args: days_ahead: How many days ahead to look (default 14, max 60).

ParametersJSON Schema
NameRequiredDescriptionDefault
days_aheadNoHow many days ahead to look (default 14, max 60)

Output Schema

ParametersJSON Schema
NameRequiredDescription
scheduledYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: returned dates are plain calendar dates exactly as scheduled, and the range starts today. This helps set output expectations without contradicting the annotations.

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

Conciseness5/5

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

The description is compact, front-loaded with the primary purpose, and contains no fluff or redundant detail. The additional sentence about calendar dates adds value without bloating the text.

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?

For a read-only tool with one optional parameter, complete schema coverage, helpful annotations, and an output schema, the description provides enough context to call the tool correctly. The only minor gap is lack of explicit sibling differentiation, but overall nothing critical is missing for effective invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's 'days_ahead' text is essentially identical to the schema property description. It repeats the default and max values rather than adding new semantic meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('upcoming scheduled workouts'), and the scope ('starting with today'). It is easily distinguishable from sibling tools like get_workout_detail or get_activities, so an agent can understand what this tool provides without opening other schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'upcoming scheduled workouts' implies use for future scheduled workouts, and 'starting with today' plus 'days_ahead' gives clear retrieval context. However, the description does not explicitly name alternatives or state when not to use this tool, so some usage inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_training_maxesA
Read-onlyIdempotent
Inspect

Get training max (1RM estimate) values for exercises. Returns all training maxes, or filter by exercise name.

Args: exercise_name: Optional exercise display name to filter (e.g. 'Barbell Back Squat').

ParametersJSON Schema
NameRequiredDescriptionDefault
exercise_nameNoOptional exercise display name to filter (e.g. 'Barbell Back Squat')

Output Schema

ParametersJSON Schema
NameRequiredDescription
training_maxesYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that invoking with no filter returns all training maxes and with exercise_name returns a subset, plus clarifying that values are 1RM estimates. No side effects or edge cases are disclosed, but this is acceptable for a simple getter.

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

Conciseness5/5

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

Three short sentences front-load the core behavior and then cover the optional parameter. No filler, no redundant background, and the structure flows naturally from purpose to filtering behavior.

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?

For a single-optional-parameter read tool with an output schema and readOnly/idempotent annotations, the description is complete. It states both invocation modes (all vs filtered) and clarifies the data meaning (1RM estimate). Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%; the schema already fully documents exercise_name as an optional display-name filter. The description repeats that same example ('Barbell Back Squat') without adding additional meaning, so it meets the baseline but adds little beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get training max (1RM estimate) values for exercises.' It also states the two modes (all values or filtered by exercise name), clearly distinguishing this read tool from the sibling set_training_max and other get_* tools.

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?

The description clearly establishes retrieval context: use it to read training maxes, with an optional filter. It does not explicitly name alternatives such as set_training_max or spell out when not to use the tool, but the read-vs-write contrast is obvious from the sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_settingsA
Read-onlyIdempotent
Inspect

Get the user's workout settings: unit preference (lbs/kg), weight rounding, and other preferences. Call this early in a conversation so you have context for all subsequent responses.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitsYes
weight_roundingNo
skip_last_rest_stepNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only timing advice, not additional behavioral traits such as authentication needs, rate limits, or what entities are affected. Since it doesn't contradict annotations, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences, no filler. The first sentence front-loads the operation and examples; the second gives actionable usage guidance. Every clause earns its place.

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

Completeness4/5

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

For a simple, read-only, zero-parameter getter with an output schema present, the description is sufficient: it defines purpose and provides invocation timing. It doesn't explicitly contrast with sibling tools, but the uniqueness of 'user settings' is clear enough that this omission is minor.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is trivially 100% and the description cannot add parameter-level meaning. The description does clarify the type of data returned (workout settings such as units and rounding), which is relevant to context even though it's not parameter-related. Baseline 4 applies for zero-parameter tools.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('user's workout settings') and gives concrete examples (unit preference, weight rounding), making the tool's role unmistakable. It reads as distinct from the various sibling get_* tools by focusing on global user preferences rather than domain-specific entities.

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?

The description explicitly says to call this tool early in a conversation to have context for subsequent responses, which is clear when-to-use guidance. However, it does not name alternatives or provide any exclusions (e.g., 'use get_coach_profile for coach-specific settings'), so it falls short of a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weekly_training_statusA
Read-onlyIdempotent
Inspect

Get a coaching summary for one Monday-Sunday training week. Use it when planning a workout to see workouts completed vs goal, calendar days left including today, strength/hypertrophy/endurance set counts, credited sets per muscle vs the user's four-week average, and trained or missing movement patterns. Defaults to the user's current local week.

The week boundaries and days_left depend on the user's timezone. If this client reports no timezone (the server instructions say so) and you know the user's IANA zone, pass it as timezone; otherwise the week is computed in UTC and week.timezone says so.

Args: week_start: Optional Monday in YYYY-MM-DD format. Defaults to the current local week. timezone: Optional IANA zone id (e.g. 'America/Denver') used to pick the current week and count days_left when the client reports no timezone.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoIANA zone id the week is computed in (e.g. 'America/Denver'). Only needed when the client reports no timezone; a client reported timezone always takes precedence. Defaults to UTC.
week_startNoMonday of the week to inspect (YYYY-MM-DD). Defaults to the current local week.

Output Schema

ParametersJSON Schema
NameRequiredDescription
weekYes
workoutsYes
muscle_loadYes
training_focusYes
movement_patternsYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent. The description adds meaningful behavior beyond that: current-week defaults, timezone-dependent week boundaries, days_left calculation, and UTC fallback behavior. This is exactly the kind of extra context agents need.

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

Conciseness4/5

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

The description is front-loaded with a clear purpose and use case, followed by useful timezone context. The 'Args' block at the end is slightly redundant with the input schema, but the overall structure is organized and free of fluff.

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 output schema, read-only annotations, and thorough description covering default behavior, timezone edge cases, and parameter usage, nothing critical is missing for an agent to select and invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents week_start and timezone. The description mostly paraphrases the schema, adding only modest nuance about timezone affecting week selection and days_left. This is marginal value beyond structured input definitions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get a coaching summary for one Monday-Sunday training week.' It then enumerates the exact content areas returned, making it easy to distinguish from siblings like get_schedule or get_workout_detail.

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 explicitly says 'Use it when planning a workout' and explains when to pass timezone vs when UTC will be used. It does not name alternative sibling tools or state when not to use this tool, but the contextual guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workout_detailA
Read-onlyIdempotent
Inspect

Get the full structured detail of a workout template, shaped exactly like create_workout input (exercise display names, sets, rest mode, supersets, RPE, % of training max). Identify it by either workout_id (preferred when another tool returned an id) or exact workout_name, but not both. An id returns at most one workout; a name returns every matching workout, each carrying its folder. The model writes its own summary from this data.

ParametersJSON Schema
NameRequiredDescriptionDefault
workout_idNoStable workout id returned by another LiftTrack tool
workout_nameNoThe exact name of the workout template

Output Schema

ParametersJSON Schema
NameRequiredDescription
workoutsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral detail beyond annotations: id returns at most one workout, name returns every matching workout, and results include the folder. This is meaningful context without contradicting annotations.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the primary purpose and output shape, followed by lookup rules. Every sentence adds value; the model-summary note is slightly extra but not distracting.

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 read-only annotations, output schema presence, and simple two-parameter input, the description is complete. It covers output shape, identification approach, matching behavior, and per-result folder context. No critical details are missing.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds important semantics: mutual exclusivity, preference for workout_id when available, exact-match requirement for name, and different cardinality results. This goes beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get the full structured detail of a workout template.' It also specifies the exact output shape, listing representative fields, which distinguishes it from sibling listing tools like get_workout_templates.

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?

The description gives clear guidance on identifier selection: use workout_id when available, otherwise exact workout_name, and not both. It also clarifies cardinality differences. It does not explicitly route to or away from sibling tools, but the lookup guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workout_templatesA
Read-onlyIdempotent
Inspect

List workout templates as a high level summary: name, folder, and exercise count, plus total_count. Returns at most limit templates (default 50, max 200); total_count tells you when the list was truncated. Use folder_name to filter by a specific folder. To see a template's full structure (exercises, sets, loads, rest, supersets), call get_workout_detail with its exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax templates to return (default 50, max 200)
folder_nameNoOptional folder name to filter by

Output Schema

ParametersJSON Schema
NameRequiredDescription
templatesYes
total_countYesTotal templates matching the filter, before the limit

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses that results are high-level summaries, that limit caps the result count, and that total_count signals truncation. These behaviors add meaningful context not available in the annotations.

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

Conciseness5/5

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

The description is four concise, purposeful sentences: action and output, limit/truncation behavior, filtering, and the alternative endpoint. No filler or redundant content; each sentence earns its place.

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?

With an output schema present and read-only annotations, the description covers all essential behavior: summary fields, truncation via total_count, optional folder filter, and the path to full detail. There are no required parameters or hidden prerequisites to disclose.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are already documented with their exact semantics (default/max for limit, optional filter for folder_name). The description repeats this information without adding new parameter-level meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource ('List workout templates as a high level summary') and enumerates exact output fields (name, folder, exercise count, total_count). It also differentiates from get_workout_detail by explicitly noting it does not show full structure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative endpoint (get_workout_detail) and the condition for using it ('to see a template's full structure'). It also identifies the folder_name parameter as an optional filter, giving the agent a clear decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_exercisesA
Read-onlyIdempotent
Inspect

Search the exercise catalog by name, muscle group, and/or equipment. Returns display name, muscles, and equipment, best matches first, max 20 results. Every exercise in a workout must come from this catalog or the user's custom exercises.

Args: query: Free text search against exercise name (e.g. 'bench press', 'romanian deadlift'). muscle_group: Filter to a primary muscle group. equipment: Filter to an equipment type.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree text search against exercise name
equipmentNoFilter to an equipment type
muscle_groupNoFilter to a primary muscle group

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses return fields, 'best matches first' ordering, a 20-result cap, and the catalog/custom-exercise sourcing constraint. These details add meaningful behavioral context without contradicting the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded, with the core purpose and key constraints in the first sentence followed by a clean Args block. There is no filler or redundant repetition of schema details.

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?

For a read-only search tool with fully documented optional parameters and an output schema, the description covers the necessary behavioral details: result cap, ordering, return fields, and catalog constraints. The custom-exercise nuance is acknowledged, making the description effectively complete.

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

Parameters4/5

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

The schema documents all three parameters with 100% coverage, so the baseline is 3. The description adds value with concrete query examples like 'bench press', clarifies that query is free-text, and signals that filters can be combined via 'and/or'.

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

Purpose5/5

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

The description opens with a clear verb–resource pair ('Search the exercise catalog') and specifies the three filter dimensions: name, muscle group, and equipment. It also states return fields and sorting behavior, making it easy to distinguish from sibling tools like validate_exercise_names.

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?

The description provides practical context: this tool finds catalog exercises for workout use, and it notes the important rule that workout exercises must come from this catalog or custom exercises. It does not explicitly name sibling alternatives or say when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_training_maxA
Idempotent
Inspect

Set the training max for an exercise (creates it, or updates an existing one). The training max is the estimated one rep max that workouts compute weights from when an exercise uses percentage of training max.

Args: exercise_name: Exact exercise display name from search_exercises. training_max: The training max value, in the user's units (lb or kg per their settings).

Updating an existing training max recalculates the weight of every workout where the exercise uses percentage of training max. Confirm with the user before changing an existing one.

ParametersJSON Schema
NameRequiredDescriptionDefault
training_maxYesTraining max in the user's units (lb or kg per their settings)
exercise_nameYesExact exercise display name from search_exercises

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitsYes
outcomeYes
previousNo
training_maxYes
exercise_display_nameYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations, the description discloses the upsert behavior (creates or updates), the significant side-effect that updating recalcs every affected workout's weights, and the need to confirm with the user before changing an existing value. This is rich behavioral context that annotations alone do not provide, and it does not contradict them.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose. The Args section is somewhat redundant with the schema's parameter descriptions, but the rest of the content—definition, side effects, and confirmation rule—earns its place without unnecessary fluff.

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?

For a two-parameter write operation, the description covers purpose, creation/update behavior, side effects, units, and the user-confirmation requirement. It also tells the agent how to source exercise_name. Since an output schema exists, the lack of a return-value description is not a gap.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are already documented. The description adds value by explaining the conceptual meaning of 'training max' as an estimated one-rep max and its role in percentage-based workout calculations, which goes beyond the schema's bare parameter descriptions.

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

Purpose5/5

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

The description opens with a specific verb ('Set') and a clear resource ('the training max for an exercise'), then clarifies that it creates or updates an existing entry. It also defines what a training max is, so the agent understands exactly what this tool does and how it relates to workouts.

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?

The description makes the context obvious: use this when the user wants to set or update a training max, and it notes that exercise_name must come from search_exercises. It also gives an important usage rule to confirm with the user before overwriting an existing value. It does not explicitly mention alternatives, but no sibling tool provides this same function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workoutA
DestructiveIdempotent
Inspect

Only call this after the user has reviewed the proposed change and approved it, following the same approval workflow as create_workout (see the server instructions).

Update an existing workout template. Identify it with workout_name (the exact current name); add workout_folder_name only when several workouts share that name (it is identity only — this tool never moves a workout between folders). Then provide only what changes; omitted fields keep their current values: name: rename the workout. exercises: replace the FULL exercise list. First call get_workout_detail and edit the object it returns (it is already in this exact shape), then pass the complete array back, including exercises you are not changing — the server preserves progression links for exercises that keep their name. The array follows create_workout's schema and rules exactly (exact names from search_exercises, target/load, rest modes, supersets, percent of training max, optional per exercise notes kept to a short cue). A rename needs no prior read: pass workout_name and name only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the workout (a rename)
exercisesNoFull replacement exercise list. Read the workout with get_workout_detail first, edit the returned object, and pass the COMPLETE array back, including exercises you are not changing.
workout_nameYesExact current name of the workout to update
workout_folder_nameNoFolder of the target workout, only needed when several workouts share the name. Identity only: this tool never moves a workout between folders.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesFinal workout name after the update
updatedYesWhich slices were written
set_countYes
previous_nameNoPresent only when the name actually changed
exercise_countYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this non-read-only and destructive, so the description's job is to add context, and it does extensively: partial-update semantics ('omitted fields keep their current values'), full-replacement behavior for exercises, preservation of progression links for exercises that keep their name, and the identity-only role of workout_folder_name (never a move). No contradiction with annotations — idempotentHint is consistent with the full-array replacement semantics, since re-sending the same complete array yields the same state.

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

Conciseness4/5

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

Long, but every sentence carries load for a genuinely complex tool with nested exercise arrays, supersets, rest modes, and two distinct update paths (rename vs. full replace). The approval gate is front-loaded, and the labeled name:/exercises: list makes the two modes scannable. The density of parentheticals costs it the last point, not the overall length.

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 an output schema, 100% schema parameter coverage, and annotations, the description covers every operational decision: when the call is permitted (after explicit approval), how to identify the target (exact current name, folder only for disambiguation), what to omit (unchanged fields), what to read first (get_workout_detail), and when no read is needed (rename-only). Routing to server instructions for the shared approval workflow is acceptable delegation rather than a gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns a 4 by adding cross-parameter semantics the schema cannot express: 'provide only what changes; omitted fields keep their current values' governs how to treat every parameter, and the rename shortcut ('pass workout_name and name only') is stated in the description. The exercises paragraph reinforces the schema's read-modify-write loop rather than duplicating field-level formats.

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

Purpose5/5

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

Opens with 'Update an existing workout template' — a specific verb and resource — and immediately differentiates from siblings: partial updates versus create_workout's creation, the get_workout_detail read-first prerequisite versus direct reads, and the explicit note that this tool never moves workouts between folders. There is no ambiguity about what operation this performs or which sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gates invocation: 'Only call this after the user has reviewed the proposed change and approved it,' and routes the agent to create_workout's approval workflow. It states the prerequisite read ('First call get_workout_detail and edit the object it returns') and the exclusion case ('A rename needs no prior read: pass workout_name and name only'), plus the exact condition for adding workout_folder_name. An agent can decide precisely when this tool rather than a sibling is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_exercise_namesA
Read-onlyIdempotent
Inspect

Check that exercise names exist in the exercise catalog or the user's custom exercises. Names must be exact display names (case-insensitive). Returns all_valid plus every invalid name with up to 3 close catalog matches as suggestions. Verify every exercise name with this tool (or take names directly from search_exercises results) before proposing a workout with create_workout — a proposal must never contain an exercise that does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesExercise display names to validate

Output Schema

ParametersJSON Schema
NameRequiredDescription
invalidYes
all_validYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral detail beyond that: exact display-name matching is case-insensitive, and the tool returns an all_valid indicator plus invalid names with up to 3 close catalog matches as suggestions. This clearly sets expectations for how the tool behaves.

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

Conciseness5/5

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

The description is concise and front-loaded: it starts with the core purpose, then covers matching rules, return behavior, and workflow guidance. Every sentence adds relevant information without redundancy or filler.

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 simple 1-parameter schema, existing output schema, and clear annotations, the description is complete enough. It explains what the tool validates, how names are matched, what it returns, and when it should be used in the broader workout-creation workflow.

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

Parameters4/5

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

The schema already describes the single parameter as 'Exercise display names to validate' with 100% coverage. The description adds meaning by specifying that names must be exact display names, case-insensitive, and that invalid entries will receive suggestions. This enriches the schema's basic description.

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

Purpose5/5

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

The description clearly states the tool's purpose: checking whether exercise names exist in the exercise catalog or custom exercises. It specifies the exact matching criteria and distinguishes the validation role from sibling tools like search_exercises and create_workout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs when to use this tool: before proposing a workout with create_workout, and provides an alternative path by taking names directly from search_exercises results. It also sets a firm rule that proposals must never contain nonexistent exercises, leaving no ambiguity about the tool's intended workflow placement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 18 tool updates
    • First observedcreate_workout
    • First observeddelete_workout
    • First observedget_activities
    • First observedget_coach_profile
    • First observedget_exercise_history
    • First observedget_folders
    • First observedget_program_detail
    • First observedget_programs
    • First observedget_schedule
    • First observedget_training_maxes
    • First observedget_user_settings
    • First observedget_weekly_training_status
    • First observedget_workout_detail
    • First observedget_workout_templates
    • First observedsearch_exercises
    • First observedset_training_max
    • First observedupdate_workout
    • First observedvalidate_exercise_names

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables logging workouts, sets, routines, food, water, and macros through natural-language chat in any MCP client, with OAuth-based secure access and timezone-aware daily tracking.
    -
  • F
    license
    B
    quality
    D
    maintenance
    A personal fitness tracking server that enables logging and querying workouts, nutrition, and body metrics through a local SQLite database. Integrates with OpenNutrition MCP for food logging and supports exercise history tracking for workout progression.
    17
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources