LiftTrack
Server Details
Manage strength workouts and track exercise progress. Requires a LiftTrack account.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 18 tools
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.
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.
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.
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 toolscreate_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"}]}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| exercises | Yes | ||
| folder_name | No | Optional 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
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| set_count | Yes | |
| folder_name | No | |
| exercise_count | Yes | |
| folder_created | Yes |
TDQS
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.
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.
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.
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.
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.
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_workoutADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | Folder that holds the workout, to disambiguate duplicate names. Use "My Workouts" for a workout not in any folder. | |
| workout_name | Yes | The exact name of the workout template to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| folder_name | No | |
| workout_name | Yes |
TDQS
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.
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.
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.
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.
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.
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_activitiesARead-onlyIdempotentInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 100) | |
| detail | No | 'summary' = names/dates only; 'full' = per-set detail (default) | |
| end_date | No | End of date range (YYYY-MM-DD). Defaults to today. | |
| start_date | No | Start of date range (YYYY-MM-DD). Defaults to 30 days ago. | |
| workout_name | No | Optional filter by workout name |
Output Schema
| Name | Required | Description |
|---|---|---|
| activities | Yes |
TDQS
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.
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.
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.
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.
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.
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_profileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| goals_notes | No | |
| primary_goal | No | |
| days_per_week | No | |
| training_split | No | |
| liked_exercises | No | |
| experience_level | No | |
| limitations_notes | No | |
| disliked_exercises | No | |
| available_equipment | No | |
| session_length_minutes | No | |
| weekly_endurance_hours | No |
TDQS
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.
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.
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.
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.
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.
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_historyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent sessions (default 10, max 50) | |
| exercise_name | Yes | The exercise display name (e.g. 'Barbell Bench Press') |
Output Schema
| Name | Required | Description |
|---|---|---|
| trend | No | |
| sessions | Yes | |
| exercise_display_name | Yes |
TDQS
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.
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.
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.
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.
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.
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_foldersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| folders | Yes |
TDQS
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.
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.
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.
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.
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.
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_detailARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| program_id | Yes | Stable program id returned by get_programs |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| pause | No | |
| weeks | Yes | |
| status | Yes | |
| program_id | Yes | |
| total_weeks | Yes | |
| current_week | No | |
| days_per_week | Yes |
TDQS
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.
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.
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.
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.
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.
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_programsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| programs | Yes |
TDQS
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.
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.
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.
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.
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.
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_scheduleARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No | How many days ahead to look (default 14, max 60) |
Output Schema
| Name | Required | Description |
|---|---|---|
| scheduled | Yes |
TDQS
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.
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.
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.
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.
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.
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_maxesARead-onlyIdempotentInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| exercise_name | No | Optional exercise display name to filter (e.g. 'Barbell Back Squat') |
Output Schema
| Name | Required | Description |
|---|---|---|
| training_maxes | Yes |
TDQS
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.
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.
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.
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.
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.
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_settingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| weight_rounding | No | |
| skip_last_rest_step | No |
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | IANA 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_start | No | Monday of the week to inspect (YYYY-MM-DD). Defaults to the current local week. |
Output Schema
| Name | Required | Description |
|---|---|---|
| week | Yes | |
| workouts | Yes | |
| muscle_load | Yes | |
| training_focus | Yes | |
| movement_patterns | Yes |
TDQS
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.
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.
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.
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.
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.
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_detailARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workout_id | No | Stable workout id returned by another LiftTrack tool | |
| workout_name | No | The exact name of the workout template |
Output Schema
| Name | Required | Description |
|---|---|---|
| workouts | Yes |
TDQS
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.
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.
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.
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.
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.
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_templatesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max templates to return (default 50, max 200) | |
| folder_name | No | Optional folder name to filter by |
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | Yes | |
| total_count | Yes | Total templates matching the filter, before the limit |
TDQS
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.
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.
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.
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.
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.
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_exercisesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free text search against exercise name | |
| equipment | No | Filter to an equipment type | |
| muscle_group | No | Filter to a primary muscle group |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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_maxAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| training_max | Yes | Training max in the user's units (lb or kg per their settings) | |
| exercise_name | Yes | Exact exercise display name from search_exercises |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| outcome | Yes | |
| previous | No | |
| training_max | Yes | |
| exercise_display_name | Yes |
TDQS
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.
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.
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.
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.
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.
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_workoutADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the workout (a rename) | |
| exercises | No | Full 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_name | Yes | Exact current name of the workout to update | |
| workout_folder_name | No | Folder of the target workout, only needed when several workouts share the name. Identity only: this tool never moves a workout between folders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Final workout name after the update |
| updated | Yes | Which slices were written |
| set_count | Yes | |
| previous_name | No | Present only when the name actually changed |
| exercise_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_namesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Exercise display names to validate |
Output Schema
| Name | Required | Description |
|---|---|---|
| invalid | Yes | |
| all_valid | Yes |
TDQS
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.
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.
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.
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.
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.
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.
18 tool updates
- First observed
create_workout - First observed
delete_workout - First observed
get_activities - First observed
get_coach_profile - First observed
get_exercise_history - First observed
get_folders - First observed
get_program_detail - First observed
get_programs - First observed
get_schedule - First observed
get_training_maxes - First observed
get_user_settings - First observed
get_weekly_training_status - First observed
get_workout_detail - First observed
get_workout_templates - First observed
search_exercises - First observed
set_training_max - First observed
update_workout - First observed
validate_exercise_names
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity – fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge – works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge – works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.
Track workouts, nutrition, body metrics, habits, and SMART goals with insights and trends. Connect…
Manage your Evertrain training — programs, workouts, exercises, history, and coaching notes.
- JotiOAuthcom.kompetic
Read your workouts, history, and stats; create and schedule new workouts. Writes are additive only.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables 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.-
- FlicenseBqualityDmaintenanceA 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-
- FlicenseNot gradedqualityCmaintenanceEnables reading Hevy workout data and creating workout routines and logged workouts through Hevy's public API.39,164-
- FlicenseAqualityDmaintenanceEnables workout logging, volume calculation, exercise database search with 1500+ exercises, and AI-powered workout plan generation with DynamoDB persistence.14-