Skip to main content
Glama

Server Details

Talk to your own gym log. Reps is a free workout tracker for iPhone and Android; connect it to Claude, ChatGPT or any MCP client and ask about your workout history, personal records, exercise progression, weekly summaries, routines and training plan. The assistant can also save a new routine, edit one, save a whole plan, add custom exercises and exercise notes, always after you confirm in the chat. It cannot log a workout or delete your history. Requires a free Reps account created in the app; you sign in with a one-time email code.

Ownership verified
Status
Healthy
Uptime
74.1% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 14 tools

Disambiguation4/5

Tools target distinct resources and actions (exercises, routines, plans, stats, notes), and descriptions clarify boundaries well. However, get_stats_overview and get_weekly_summary overlap in reporting training totals, and get_routines vs get_training_plan could be initially confused, so not perfect.

Naming Consistency5/5

All 14 tools use snake_case with a predictable verb_noun structure (get_, save_, edit_, update_, add_, set_). No mixed conventions; verbs consistently indicate read vs write operations.

Tool Count5/5

14 tools is well within the ideal range and each tool maps to a distinct operation. The set avoids redundancy and covers the domain without bloat.

Completeness3/5

Core create/read/update flows exist for routines and custom exercises, and read-only stats are rich. However, no delete tools exist for routines, custom exercises, or plans, and there is no way to edit an existing plan's schedule; these are notable lifecycle gaps.

Available Tools

14 tools
add_custom_exerciseA
Idempotent
Inspect

Use this when the user wants an exercise the library does not have, such as a gym-specific machine or a variation, added to their own Reps exercises. Search get_exercise_library FIRST: a match comes back as already_exists instead of a duplicate. Fill in muscle_groups and equipment from what the user described, and tell the user in one sentence what you assumed. The exercise is created at once, and the returned slug / exercise_id work in save_routine, save_plan and edit_routine straight away. To change it later, use update_custom_exercise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo
notesNo
equipmentYes
reasoningNo
unilateralNo
muscle_groupsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
slugYes
typeYes
notesYes
equipmentYes
reasoningYes
unilateralYes
exercise_idYes
proposal_idYes
muscle_groupsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=false), so the bar is lower. The description nonetheless adds real behavioral context: duplicate handling returns already_exists, creation is immediate ('created at once'), and the returned slug/exercise_id are immediately usable in save_routine, save_plan and edit_routine. It does not cover error cases or what happens with optional fields like reasoning, keeping it short of a 5.

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 prerequisite search instruction is front-loaded before the mechanics, and the closing sentence routes to update_custom_exercise. It is dense but nearly every sentence carries a distinct instruction; the 'tell the user in one sentence what you assumed' clause is slightly tangential to tool invocation.

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?

An output schema exists, so return values need not be documented, yet the description usefully notes slug/exercise_id interoperability with three sibling tools. Combined with the search-first prerequisite and the update route, an agent has enough to call this correctly; only the undocumented optional parameters remain a gap.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, so the description carries the full burden and only partially delivers. It gives actionable guidance for two of them ('Fill in muscle_groups and equipment from what the user described'), but leaves name, type, notes, reasoning and unilateral entirely unexplained in both schema and 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 states a specific verb and resource ('added to their own Reps exercises') and immediately frames the exact case it covers: an exercise the library lacks, such as a gym-specific machine or variation. It also names the sibling it is not (get_exercise_library for search, update_custom_exercise for changes), so an agent can route without opening any schema.

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 gives an explicit prerequisite ('Search get_exercise_library FIRST'), explains why (a match returns already_exists instead of a duplicate), and names the alternative for later modification ('use update_custom_exercise'). This is a rare case of when-to-use, ordering, and when-not-to-use all being stated.

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

edit_routineA
Destructive
Inspect

Use this when the user wants to change one of their saved Reps routines: swap, add or remove exercises, or change sets, targets, order or name. First call get_routines for its routine_id, current exercises and updated_at. This writes straight away: tell the user exactly what will change (what is added, removed or adjusted) and wait for an explicit yes in this conversation. Send the FULL end state in exercises, every exercise the routine should contain, in order; anything left out is removed. A timed hold or cardio takes target_duration_seconds instead of target_reps. Pass the updated_at you read as base_updated_at: if the routine changed in the Reps app since, nothing is saved and the result is routine_changed. The result lists the routine as it now stands. The change shows up in the Reps app after its next sync (up to 5 minutes) or when the app is reopened.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
exercisesYes
routine_idYes
base_updated_atYes
estimated_duration_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
exercisesYes
routine_idYes
updated_atYes
exercise_countYes
visible_in_appYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description goes well beyond them: it warns the write is immediate, defines the destructive replace-all semantics ('anything left out is removed'), explains the optimistic-concurrency guard and the routine_changed failure mode, and notes the change only appears after sync (up to 5 minutes). This is exactly the context an agent needs before a destructive write.

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?

Front-loaded with the when-to-use clause, then prerequisites, then safety/confirmation, then data-shape rules, then return/sync behavior. Dense but every sentence carries operational weight; the only mild cost is length, which is justified for a destructive write.

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?

Despite an output schema existing, the description still surfaces the key result semantics the agent must react to (the routine as it now stands, and the routine_changed no-write outcome). Prerequisites, confirmation, data shape, failure mode and sync delay are all covered for a destructive, non-idempotent tool.

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 0% schema description coverage the description carries the load, and it does so for the highest-risk fields: exercises must be the FULL end state in order, omission means removal, and timed holds/cardio take target_duration_seconds instead of target_reps. base_updated_at is explained via the concurrency rule. It does not explain estimated_duration_minutes or nested fields like rest_seconds/notes, so it falls short of full compensation.

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?

States a specific verb and resource ('change one of their saved Reps routines') and enumerates what can change (swap/add/remove exercises, sets, targets, order, name). It is clearly distinguished from the sibling read tool get_routines and from save_routine by the explicit 'change ... saved' framing.

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?

Names the trigger condition ('when the user wants to change ... a saved routine'), mandates a prior get_routines call for routine_id/exercises/updated_at, and prescribes a required confirmation step with an explicit 'yes in this conversation' before writing. Alternatives and prerequisites are both spelled out.

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

get_exercise_libraryA
Read-onlyIdempotent
Inspect

Use this when you need an exercise's slug for another Reps tool, or the user asks which exercises exist for a muscle group or equipment. Searches built-in and custom exercises by search (a name, any app language), muscle_group and/or equipment. Each result has its slug and the user's own note on it, or null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
equipmentNo
muscle_groupNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
exercisesYes
truncatedYes
total_matchedYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld=false, so safety is covered. The description adds non-trivial behavioral scope: it searches BOTH built-in and custom exercises, and returns each result's `slug` plus the user's own `note` (or null). That said, return details overlap with the output schema, keeping it just below a 5.

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, front-loaded with the when-to-use trigger, then the search mechanics and return shape. Every clause adds information and nothing is redundant.

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?

With an output schema present, return values need not be fully restated, and the description appropriately focuses on usage and filtering. The one gap is the unexplained `limit` parameter, which slightly under-informs the call for a moderate-complexity tool.

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 0%, so the description must carry parameter meaning. It explains `search` (a name, any app language), `muscle_group` and `equipment`, and even adds the 'any app language' nuance, but leaves the `limit` parameter entirely undocumented in both schema and 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?

States a specific verb (searches/Searches) and resource (built-in and custom exercises) and explicitly frames the tool's role as supplying an exercise's `slug` for other Reps tools. An agent can distinguish it from siblings like add_custom_exercise or get_exercise_progression without opening the schema.

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?

Gives a clear triggering condition: 'Use this when you need an exercise's slug for another Reps tool, or the user asks which exercises exist for a muscle group or equipment.' It does not name an alternative tool or state when NOT to use it, so it stops short of the exclusionary guidance a 5 requires.

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

get_exercise_progressionA
Read-onlyIdempotent
Inspect

Use this when the user asks how one exercise has progressed over time ("how has my bench press progressed?"). Returns one point per training day for exercise_slug, from from to to (default: the last 90 days); metric is max_weight (default), estimated_1rm (Epley) or volume. An unknown slug comes back with candidates, logged ones first.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
metricNo
exercise_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteNo
metricYes
pointsYes
candidatesNo
exercise_nameYes
exercise_slugYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the baseline is covered. The description adds meaningful behavioral detail beyond annotations: the 90-day default window, the three metric options with their defaults, and the fallback behavior when an unknown exercise slug is provided (returns candidates, logged ones first).

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 sentences, front-loaded with the usage condition, then return granularity, date defaults, metric semantics, and error handling. No redundant or filler content.

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 progression query with rich annotations and an output schema, the description covers the remaining gaps: default date window, metric meanings, and unknown-slug fallback. An agent has everything needed to invoke it correctly.

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?

With 0% schema description coverage, the description fully compensates: it explains exercise_slug, specifies that from/to default to the last 90 days, and lists metric values and defaults (max_weight default, estimated_1rm as Epley, volume). All four parameters are given semantic context beyond their bare types and enum.

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: it returns one point per training day tracking an exercise's progression over time. It also includes a concrete user-query example, making the purpose immediately clear and distinguishable from sibling tools like get_personal_records or get_stats_overview.

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 trigger condition: 'Use this when the user asks how one exercise has progressed over time.' However, it does not name alternatives or state when not to use this tool, so the routing guidance is clear but not exhaustive.

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

get_personal_recordsA
Read-onlyIdempotent
Inspect

Use this when the user asks about their personal records ("what are my PRs?", "what is my heaviest squat?"). Each record has a record_type ('max_weight' kg, 'max_reps' count, 'max_volume' weight×reps, 'estimated_1rm' kg) and a numeric value. Filter by exercise_slug and/or kind, or omit both for all. An unknown slug comes back with candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
exercise_slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteNo
recordsYes
candidatesNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the meaning and units of each record_type, the shape of value, and the fallback that an unknown slug returns `candidates` rather than an error. No mention of pagination or result-size limits.

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?

Four dense sentences, front-loaded with the usage trigger and then the data model. The parenthetical examples and unit annotations all earn their place; there is no filler or repetition of schema content.

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?

With an output schema present, return values needn't be spelled out, yet the description still documents record fields and the unknown-slug candidate behavior. For a two-param, no-required-param read tool it is close to complete; only ordering/pagination behavior is unaddressed.

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 0%, so the description must carry the burden, and it largely does: it defines each record_type value with units ('max_weight' kg, 'max_volume' weight×reps, 'estimated_1rm' kg) and explains the AND/omit semantics of exercise_slug and kind. It never describes the expected format of exercise_slug itself, leaving that parameter partly opaque.

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?

States a specific verb and resource (retrieve personal records) and grounds it with concrete user phrasings ('what are my PRs?', 'what is my heaviest squat?'), which cleanly separates it from neighbors like get_exercise_progression or get_stats_overview. An agent can match an intent to this tool without opening the schema.

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?

Provides an explicit activation trigger ('Use this when the user asks about their personal records') and explains the filtering decision: filter by exercise_slug and/or kind, or omit both for all. It does not state when to prefer a sibling tool (e.g. progression or stats) instead, so it falls short of the 5 bar.

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

get_routinesA
Read-onlyIdempotent
Inspect

Use this when the user asks about their saved routines ("show me my Push routine") or before changing one. Returns routines in any plan or none, each with its exercises (default_sets, notes) and in_plans (plans using it, with day_of_week). Filter by routine_id or a name search, or omit both for all. Each routine carries updated_at: pass it as base_updated_at to edit_routine, which refuses the edit if the routine changed in the Reps app after you read it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
routine_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
routinesYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotent, non-destructive), yet the description adds real behavioral value: return shape, the in_plans cross-reference, and the optimistic-concurrency contract where updated_at must be passed as base_updated_at or the edit is refused. That last point is non-obvious and operationally important.

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 densely packed sentences, front-loaded with the usage trigger followed by return contents and the edit_routine handoff. No filler; each sentence carries distinct information.

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?

An output schema exists, so return values needn't be explained, and the description goes beyond that with filtering rules and the concurrency contract. The only gap is the undocumented `limit` parameter, which an agent may need to understand for large result sets.

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 0% schema description coverage the description must carry the load, and it explains routine_id filtering, name search, and the omit-both-for-all default. However, the `limit` parameter is never mentioned in the description or schema, leaving one of three parameters undocumented.

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?

States a specific verb+resource ('Returns routines') with explicit scope ('in any plan or none') and details the returned content (exercises, default_sets, notes, in_plans with day_of_week). This clearly distinguishes it from edit_routine and save_routine among the siblings.

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?

Gives a concrete trigger ('when the user asks about their saved routines') and a workflow role ('before changing one'), and routes the mutation to edit_routine via base_updated_at. It lacks explicit when-not guidance versus siblings like get_training_plan or get_exercise_library, so it falls just 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_stats_overviewA
Read-onlyIdempotent
Inspect

Use this when the user asks for an overview of their training over a period, such as volume trends or muscle-group balance. Totals from from to to (default: the last 30 days): workouts, volume, weekly volume trend, muscle distribution and the top 5 exercises.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteNo
top_exercisesYes
total_workoutsYes
total_volume_kgYes
current_streak_daysNo
longest_streak_daysNo
muscle_distributionYes
weekly_volume_trendYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: the aggregation is a total across an inclusive from/to window, and the window defaults to the last 30 days when omitted. It does not mention pagination, limits, or empty-result behavior, but the annotated tool needs less of that.

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, zero filler. The usage trigger is front-loaded and the second sentence delivers scope, defaults, and return contents compactly.

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?

An output schema exists, so the enumerated return values are supplementary rather than load-bearing, and usage plus default window are covered. The remaining gap is the accepted date string format for from/to, which is undocumented in both schema and description, plus no guidance on zero-data ranges.

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 0%, so the description must carry both parameters — and it does define their roles ('Totals from `from` to `to`') plus the default window. However, both are typed only as plain strings with no format guidance (ISO date? relative?), which is the critical missing detail for a date-range tool, so it compensates only partially.

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?

States a specific verb+resource (retrieve training stats overview over a period) and enumerates exactly what is produced: workouts, volume, weekly volume trend, muscle distribution, top 5 exercises. This distinguishes it from siblings like get_weekly_summary and get_workout_history without the agent needing to open a schema.

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?

Opens with an explicit trigger condition ('Use this when the user asks for an overview of their training over a period, such as volume trends or muscle-group balance'), which is strong when-to-use guidance. It does not name or exclude the overlapping siblings (get_weekly_summary, get_workout_history), so routing between near-duplicates is left to inference.

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

get_training_planA
Read-onlyIdempotent
Inspect

Use this when the user asks what to train today or next, or about their current training plan. Returns the active plan, its routines and exercises, and a next_routine: today's in a fixed-day plan, the next one in a rotation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteNo
routinesNo
plan_nameYes
next_routineNo
schedule_typeNo

TDQS

A4.5/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, so the safety profile is covered without description help. The description adds real behavioral value by explaining the computed `next_routine` semantics (today's routine in a fixed-day plan vs. the next in a rotation), which is logic an agent cannot infer from annotations alone.

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, zero waste: the usage trigger is front-loaded, then the return content. Every clause carries information the agent needs to decide to call it and to interpret next_routine.

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?

An output schema exists, so return values need not be enumerated, and the description instead covers the one non-obvious semantic (how next_routine is derived). For a no-argument read tool this is complete: an agent knows when to call it and how to read the answer.

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 takes zero parameters, so the baseline is 4 and there is no parameter meaning the description needs to supply. It neither overstates nor misdescribes any input.

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 and resource ('Returns the active plan, its routines and exercises') rather than restating the name. It also implicitly distinguishes itself from the sibling get_routines by scoping the result to the *active* plan plus a next_routine decision.

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 an explicit, natural-language trigger ('when the user asks what to train today or next, or about their current training plan'), which is exactly the routing signal an agent needs. It stops short of naming an alternative or exclusion (e.g., when to prefer get_routines or get_workout_history instead), so it is clear context but not full when/when-not guidance.

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

get_weekly_summaryA
Read-onlyIdempotent
Inspect

Use this when the user asks how a given week of training went ("how was last week?"). Totals for one Monday–Sunday week (week_offset 0 = this week, -1 = last week): workouts_count, total_volume_kg, total_duration_seconds, muscle_distribution, and is_partial=true for the current week.

ParametersJSON Schema
NameRequiredDescriptionDefault
week_offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
week_endYes
is_partialYes
week_startYes
workouts_countYes
total_volume_kgYes
muscle_distributionYes
total_duration_secondsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely new behavioral context beyond the annotations: the Monday–Sunday week boundary and the is_partial=true flag for the in-progress week, which the agent could not infer otherwise.

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?

Front-loads the usage trigger, then packs the offset semantics and return fields into one tight sentence. The field enumeration is partly redundant with the output schema, which is the only mild waste.

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-parameter, read-only summary tool with an output schema covering return values, this covers when to use it, what the parameter means, and the one non-obvious behavior (partial current week). Nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the parameter. It does: 'week_offset 0 = this week, -1 = last week' gives direction and sign convention, enough to call the tool correctly without opening 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?

States a specific retrieval: totals for one Monday–Sunday week, and enumerates the exact aggregates returned (workouts_count, total_volume_kg, total_duration_seconds, muscle_distribution). The weekly granularity inherently separates it from siblings like get_stats_overview and get_workout_history.

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?

Gives an explicit trigger with a concrete user utterance ('how was last week?'), which tells the agent exactly when to reach for this tool. It stops short of naming when NOT to use it or pointing at an alternative like get_stats_overview.

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

get_workout_historyA
Read-onlyIdempotent
Inspect

Use this when the user asks what they did in past gym workouts: exercises, sets, reps and weights ("show my last 5 workouts", "what did I do this week?"). Returns finished workouts, newest first, with their exercises, sets and routine_name (the routine it was started from, or null). Filter by from / to and exercise_slugs; defaults to the last 30 days and 20 workouts, at most 100 per call. It has only what was logged in the Reps app (sets, reps, weights, durations): no heart rate, pace, GPS or data from a watch or another app, so do not call it for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
exercise_slugsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteNo
workoutsYes
candidatesNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: ordering (newest first), default window (last 30 days, 20 workouts), hard cap (100 per call), and the data-provenance limitation (only what was logged in the Reps app). This tells the agent both what it will get and what it will silently not contain.

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?

Front-loaded with the trigger and the return payload, with the exclusion note last. It is dense and information-rich, though the middle sentence packs ordering, defaults, and caps into a long clause chain that reads slightly run-on.

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, the description needn't detail return values, yet it still characterizes them (finished workouts, newest first, with routine_name nullable). Coverage of triggers, exclusions, filters, defaults, and limits makes it complete enough for correct invocation.

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 0%, so the description must compensate, and it does for three of four parameters: from/to filtering, exercise_slugs filtering, and limit defaults/caps (30 days, 20, max 100). It does not specify the date string format for from/to nor the slug format, leaving a small gap on the wire format.

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?

States a specific verb+resource (retrieve finished gym workout history) with the exact payload returned: exercises, sets, reps, weights and routine_name. It clearly distinguishes itself from siblings like get_stats_overview, get_weekly_summary and get_exercise_progression by scoping to logged workout sessions and naming the example questions it answers.

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?

Gives explicit when-to-use triggers with quoted user utterances ("show my last 5 workouts", "what did I do this week?") and an explicit when-NOT-to-use boundary: no heart rate, pace, GPS, or data from a watch/other app, so do not call it for those. The alternative condition is stated even though sibling names are not.

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

save_planA
Destructive
Inspect

Use this when the user wants a whole training plan (several routines on a schedule, such as a push/pull/legs split) saved to their Reps account, including a plan they bring as a photo, PDF, spreadsheet or pasted text. This writes straight away: first describe the plan to the user (its routines, their exercises and the schedule) and wait for an explicit yes in this conversation. schedule_type is "rotation" (routines run in order, no weekdays) or "fixed_days" (every routine needs a distinct day_of_week, 1 = Monday … 7 = Sunday). To reuse a routine the user already has, pass its routine_id from get_routines: it is LINKED, not copied, and keeps its own name. Otherwise give its name and exercises, with slugs or ids from get_exercise_library (a timed hold or cardio takes target_duration_seconds instead of target_reps). For a plan the user brought, read it yourself, look every exercise up, and add what the library lacks with add_custom_exercise before saving; an unknown exercise is refused with candidates. The plan becomes the active one unless you pass activate: false; that stops the previously active plan, which the result names in replaced_plan, so tell the user. It shows up in the Reps app after its next sync (up to 5 minutes) or when the app is reopened; say so.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
activateNo
routinesYes
schedule_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
plan_idYes
routinesYes
is_activeYes
routine_idsYes
replaced_planYes
schedule_typeYes
visible_in_appYes
linked_routine_idsYes
created_routine_idsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description supplies the context that makes those hints actionable: it 'writes straight away', it deactivates the previously active plan unless activate:false, the replaced plan is named in replaced_plan, and the result only appears after an app sync of up to 5 minutes. That is exactly the extra behavioral detail annotations cannot convey.

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?

It is long, but nearly every sentence adds distinct operational value and it is front-loaded with the confirmation requirement before the field-level detail. A slight trim of the sync/app-reopen clause would tighten it without losing meaning.

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 a write tool with no schema descriptions, a 4-parameter nested schema and a sibling save_routine, the description covers prerequisites, side effects, error behavior (unknown exercise refused with candidates), and the activation outcome. The output schema covers return shape, so no return-value explanation is needed.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the load and does: it explains schedule_type's two enum values and the day_of_week constraint under fixed_days (distinct day per routine, 1 = Monday), the link-vs-copy semantics of routine_id, the slug/id requirement for exercises, and the target_duration_seconds alternative to target_reps.

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 names a specific verb+resource ('save a whole training plan ... to their Reps account') and immediately distinguishes it from the sibling save_routine by stressing 'several routines on a schedule, such as a push/pull/legs split'. It also enumerates the input modalities (photo, PDF, spreadsheet, pasted text), so an agent can tell exactly which tool handles whole-plan ingestion.

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 gives explicit when-to-use and when-not guidance: confirm with the user and 'wait for an explicit yes in this conversation' before writing, and route to get_routines for existing routine ids, get_exercise_library for slugs/ids, and add_custom_exercise for anything the library lacks. The condition for passing routine_id vs name+exercises is spelled out.

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

save_routineAInspect

Use this when the user wants a new workout routine saved to their Reps account ("build me a 60-minute push routine and save it"). This writes straight away: first describe the routine to the user in plain words (its name and each exercise with sets, reps and weight) and wait for an explicit yes in this conversation. A routine is a reusable template, not a log of a finished workout. Reference exercises by exercise_slug or exercise_id from get_exercise_library; one the library does not have is refused with candidates: retry with one only when it is clearly what the user meant, otherwise ask. target_reps is a rep count; for a timed hold or cardio (plank, wall sit, rowing) leave it out and give the time per set in target_duration_seconds (45 for "45 s"). rest_seconds may be 0 (a superset). The result lists what was saved by name. The routine shows up in the Reps app after its next sync (up to 5 minutes) or when the app is reopened; say so.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
exercisesYes
estimated_duration_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
exercisesYes
created_atYes
routine_idYes
exercise_countYes
visible_in_appYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the generic write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false); the description adds the operationally important facts: it writes immediately, it requires an explicit in-conversation confirmation, unknown exercises are refused with `candidates`, and the routine will not appear in the app for up to ~5 minutes or until the app is reopened. That is exactly the behavioral context structured fields cannot express.

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?

Front-loaded with the trigger, then the confirmation requirement, then parameter semantics — the priority ordering is right and every clause carries information. It runs long for a 3-parameter tool, and 'The result lists what was saved by name' is partly redundant given an output schema exists.

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?

Covers the write flow, confirmation gate, identifier validation, timing-vs-reps semantics, and the async sync caveat, which is more than enough for an agent to call it correctly. Two minor gaps remain: the meaning of `estimated_duration_minutes`, and no explicit handoff naming edit_routine for modifying an existing routine.

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 0%, so the description carries the full load and does most of it well: it explains exercise_slug/exercise_id sourcing from get_exercise_library, the target_reps vs target_duration_seconds split with a worked example (45 for '45 s'), and that rest_seconds may be 0 for a superset. Only `notes` and `estimated_duration_minutes` go unexplained, which keeps it short of a 5.

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

Purpose4/5

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

States a specific verb and resource ('save a new workout routine to their Reps account') and separates it from the finished-workout logging case ('a routine is a reusable template, not a log of a finished workout'). It implicitly distinguishes itself from edit_routine via the word 'new', but it never explicitly contrasts itself with the similarly-named sibling save_plan, so an agent must infer that boundary.

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?

Gives an explicit when-to-use trigger with a concrete user utterance ('build me a 60-minute push routine and save it'), an explicit prerequisite (describe it, then wait for an explicit yes), and an explicit retry/abandon policy when an exercise slug is refused (retry only when it is clearly what the user meant, otherwise ask). Nothing is left to inference.

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

set_exercise_noteA
DestructiveIdempotent
Inspect

Use this when the user asks to add, change or clear their own note on an exercise, built-in or custom ("note on my bench: seat 4, pause on the chest"). The note is a short gym-floor cue the Reps app shows on the exercise and during a workout; a custom exercise's step-by-step how-to goes in notes on update_custom_exercise instead. Get the slug and the current note from get_exercise_library. note replaces the whole note (to add to it, send the old text plus the new); an empty note clears it. Applied at once, with no confirmation step, so use it when the user asks for the note or has just agreed to it, and say in one sentence what the note now says.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
exercise_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
noteYes
slugYes
actionYes
is_customYes
exercise_idYes
previous_noteYes

TDQS

A5/5.0
Behavior5/5

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

The description discloses behavior well beyond the annotations: `note` replaces the whole note rather than appending, an empty string clears it, the change is applied immediately with no confirmation step, and the agent should report the new text back. This explains the destructiveHint=true replacement semantics in concrete terms the annotations cannot.

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?

It is one dense paragraph, but it is front-loaded with the trigger and every sentence earns its place: scope, sibling exclusion, prerequisite, replacement semantics, and confirmation instruction. No filler despite the length, which is justified by the destructive replacement 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?

An output schema exists, so return values need not be explained. The description covers trigger, prerequisites, mutation semantics, and sibling routing, which is everything an agent needs to invoke this correctly.

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?

With 0% schema description coverage, the description carries the full burden and does so: it explains that `note` replaces the entire note (and how to append), that an empty value clears it, and that `exercise_slug` should come from `get_exercise_library`. Both parameters are given meaning absent from 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 ('add, change or clear their own note on an exercise, built-in or custom') and explicitly distinguishes this from the sibling case where a custom exercise's how-to belongs in `notes` on `update_custom_exercise`. An agent can identify the tool's scope without opening any schema.

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 gives explicit when-to-use ('user asks to add, change or clear their own note'), the counter-case (custom exercise how-to goes elsewhere), the prerequisite workflow (fetch slug and current note via `get_exercise_library`), and the invocation condition ('when the user asks for the note or has just agreed to it'). Nothing is left to inference.

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

update_custom_exerciseA
DestructiveIdempotent
Inspect

Use this when the user asks to rename, re-file or rewrite the how-to of one of their OWN custom exercises. Find the slug with get_exercise_library (only is_custom: true rows qualify; built-ins return not_custom). Send only the fields that change: name, muscle_groups, equipment, type, unilateral, or notes, the step-by-step how-to shown on the exercise, one step per line. Applied at once, with no confirmation step, so use it when the user asks for the change or has just agreed to it, and say in one sentence what you changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeNo
notesNo
equipmentNo
reasoningNo
unilateralNo
exercise_slugYes
muscle_groupsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
nameYes
slugYes
typeNo
notesNo
changedYes
old_nameYes
old_slugYes
equipmentNo
reasoningYes
unilateralYes
exercise_idYes
muscle_groupsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so safety is partly covered. The description adds meaningful behavior beyond them: changes are 'applied at once, with no confirmation step', only changed fields should be sent (partial update), and built-ins return a not_custom outcome. It stops short of describing any rate limits or full validation error surface.

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?

Front-loaded with the triggering condition, then slug lookup, then mutable fields, then the no-confirmation caveat. Dense and largely waste-free, though packing the slug-validation parenthetical and the post-edit sentence into one block slightly dilutes scanability.

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?

An output schema exists, so return values need no explanation, and the description covers trigger, prerequisite, mutable fields, and the no-confirmation behavior. The only gaps are the unexplained 'reasoning' parameter and the exact required-vs-optional framing for the mutation body.

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 0% schema description coverage, the description carries the burden and does: it enumerates the mutable fields (name, muscle_groups, equipment, type, unilateral, notes) and clarifies notes is the step-by-step how-to, one step per line. It does not explain the 'reasoning' parameter or explicitly tie exercise_slug to the required-key role.

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 names a specific verb set (rename, re-file, rewrite the how-to) and a precise resource scope (one of their OWN custom exercises). It distinguishes from built-ins and points to get_exercise_library, so an agent can tell it apart from add_custom_exercise or set_exercise_note without opening a schema.

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?

Explicit when-to-use ('when the user asks to rename/re-file/rewrite' or 'has just agreed to it') and a clear exclusion rule ('only is_custom: true rows qualify; built-ins return not_custom'). It also names the prerequisite tool (get_exercise_library) to obtain the slug.

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.

  1. 6 tool updates
    • Changedget_exercise_progression1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_personal_records1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_stats_overview1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_training_plan1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_weekly_summary1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_workout_history1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
  2. 7 tool updates
    • Changededit_routine3 fields changed
      • addedInput schema / properties / exercises / items / properties / target_duration_seconds
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / exercises / items / properties / target_duration_seconds
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / exercises / items / required
        Previous value: -[
        -  "name",
        -  "slug",
        -  "sets",
        -  "target_reps",
        -  "target_weight_kg"
        -]New value: +[
        +  "name",
        +  "slug",
        +  "sets",
        +  "target_reps",
        +  "target_weight_kg",
        +  "target_duration_seconds"
        +]
    • Changedget_exercise_progression1 field changed
      • addedOutput schema / properties / candidates
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "slug": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "slug",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_personal_records1 field changed
      • addedOutput schema / properties / candidates
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "slug": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "slug",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_stats_overview1 field changed
      • changedOutput schema / required
        Previous value: -[
        -  "total_workouts",
        -  "total_volume_kg",
        -  "current_streak_days",
        -  "longest_streak_days",
        -  "weekly_volume_trend",
        -  "muscle_distribution",
        -  "top_exercises"
        -]New value: +[
        +  "total_workouts",
        +  "total_volume_kg",
        +  "weekly_volume_trend",
        +  "muscle_distribution",
        +  "top_exercises"
        +]
    • Changedget_workout_history3 fields changed
      • addedOutput schema / properties / candidates
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "slug": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "slug",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / workouts / items / properties / routine_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / workouts / items / required
        Previous value: -[
        -  "id",
        -  "started_at",
        -  "duration_seconds",
        -  "exercises"
        -]New value: +[
        +  "id",
        +  "started_at",
        +  "duration_seconds",
        +  "routine_name",
        +  "exercises"
        +]
    • Changedsave_plan3 fields changed
      • addedInput schema / properties / routines / items / properties / exercises / items / properties / target_duration_seconds
        Added value: +{
        +  "type": "number"
        +}
      • removedInput schema / properties / routines / items / required
        Removed value: -[
        -  "name"
        -]
      • changedOutput schema / properties / routines / items / properties / exercises / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "properties": {
        -        "name": {
        -          "type": "string"
        -        },
        -        "sets": {
        -          "type": "number"
        -        },
        -        "slug": {
        -          "type": "string"
        -        },
        -        "target_reps": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ]
        -        },
        -        "target_weight_kg": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ]
        -        }
        -      },
        -      "required": [
        -        "name",
        -        "slug",
        -        "sets",
        -        "target_reps",
        -        "target_weight_kg"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "properties": {
        +        "name": {
        +          "type": "string"
        +        },
        +        "sets": {
        +          "type": "number"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "target_duration_seconds": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "target_reps": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "target_weight_kg": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "slug",
        +        "sets",
        +        "target_reps",
        +        "target_weight_kg",
        +        "target_duration_seconds"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsave_routine3 fields changed
      • addedInput schema / properties / exercises / items / properties / target_duration_seconds
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / exercises / items / properties / target_duration_seconds
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / exercises / items / required
        Previous value: -[
        -  "name",
        -  "slug",
        -  "sets",
        -  "target_reps",
        -  "target_weight_kg"
        -]New value: +[
        +  "name",
        +  "slug",
        +  "sets",
        +  "target_reps",
        +  "target_weight_kg",
        +  "target_duration_seconds"
        +]
  3. 14 tool updates
    • First observedadd_custom_exercise
    • First observededit_routine
    • First observedget_exercise_library
    • First observedget_exercise_progression
    • First observedget_personal_records
    • First observedget_routines
    • First observedget_stats_overview
    • First observedget_training_plan
    • First observedget_weekly_summary
    • First observedget_workout_history
    • First observedsave_plan
    • First observedsave_routine
    • First observedset_exercise_note
    • First observedupdate_custom_exercise

Publisher details

Operator
Szymon Łukiewicz (Reps) · Publisher source
Vendor relationship
First-party
Trust center
Not available
Restrictions
Free, no paid plan. Requires a Reps account created in the Reps app (iOS or Android); the sign-in page cannot create one. Sign-in is a one-time email code over OAuth 2.1 with dynamic client registration. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Trainzilla MCP connects Claude to your Trainzilla coach account, turning your client roster, programming, and habit tracking into something you can manage conversationally. Built for fitness coaches running their practice on Trainzilla, it lets Claude pull up client profiles and metrics, build and review workout and diet plans, create and assign habits, run quick calculations (TDEE, macros, 1RM),
    23
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Connect MyFitnessPal to Claude or any MCP client. Log meals, search food database with macros, track trends, and export nutrition history against your real MyFitnessPal diary.
    2,173 PyPI
    21
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A personal remote MCP server that lets Claude read your Hevy workout data and MacroFactor nutrition data directly in conversation, with read-only tools for workouts, body measurements, macros, and weight trends.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources