Skip to main content
Glama

Phorme Training

Server Details

Gym workouts with demos, sport gym weeks, coach programs and your training log, saved to Phorme.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.4/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct step or resource: search vs get program details, planned vs history vs lift progress, preview vs save vs render, and exercise swap. Descriptions explicitly state when not to use and how tools chain, so an agent can select correctly despite several get_/preview_ prefixes.

Naming Consistency5/5

All names use snake_case with a consistent verb-first action+object pattern (find_, get_, preview_, save_, render_, search_). Minor singular/plural variation such as get_phorme_program vs search_phorme_programs does not break the predictable convention.

Tool Count5/5

13 tools is well within the 3-15 range and maps to clear workflow stages: discovery, preview/import, save, render, and read-only progress/plan access. No obvious redundant tools.

Completeness4/5

Core training-program and workout lifecycle is covered: search/get existing programs, preview and save imports, view planned/history/progress, and swap exercises. Missing edit/delete or list operations for saved training, but the descriptions frame these as out of scope and agents can still complete main workflows.

Available Tools

13 tools
find_exercise_swapFind an exercise swapA
Read-only
Inspect

Use this when the user needs a replacement for one exercise because they do not have the equipment, the station is taken, or they want a different option, for example no cable machine for cable rows. It returns up to five Phorme library movements of the same kind that the user's equipment allows, each with a demo link, and says so when it has to offer the nearest kind instead. It reads only and changes nothing, including any saved plan. Do not use it to work around pain or injury.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoWhy they need a swap, only if they said.
exerciseYesThe exercise to replace, as the user wrote it, for example "Seated cable row".
available_equipmentYesEquipment the user has, for example ["dumbbells", "bench"] or ["none"]. Ask when the user did not say.

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchYesnearest_kind: nothing of the same kind fits the equipment, so these work the same muscles from a different angle.
swapsYesReplacements, best first, each with name, equipment and demo_url.
limitsYesWhat the swaps do not cover. Tell the user.
matchedNoThe Phorme library movement the exercise matched.
patternNoThe kind of movement, for example horizontal_pull.
exerciseYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorld=false, but the description adds substantial behavior beyond them: the result cap ('up to five'), the filtering rule (same kind, equipment-allowed), the per-item demo link, and a disclosed fallback ('says so when it has to offer the nearest kind instead'). 'Changes nothing, including any saved plan' sharpens the read-only guarantee with a concrete reassurance about side effects.

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?

Three dense sentences with no filler, and the trigger conditions are front-loaded before the return behavior and the exclusion. It is slightly long for the payload, but every clause carries distinct information, so the sizing is defensible rather than padded.

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-shape explanation is not required, and the description stays complete for the remaining gaps: trigger conditions, fallback behavior, and the safety exclusion. An agent has everything needed to decide whether to call it and what the caller will receive.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters including the reason enum and the available_equipment example array, making 3 the baseline. The description reinforces the preference/busy/equipment framing but adds no syntax, format, or constraint detail the schema lacks.

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 ('a replacement for one exercise') and enumerates the exact conditions that trigger it (missing equipment, busy station, wanting a different option) with a concrete example ('no cable machine for cable rows'). Clearly distinguishable from every sibling, all of which are read/save/preview tools rather than substitution finders.

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 both when-to-use (the three triggering reasons plus the cable-row example) and an explicit when-not-to-use exclusion ('Do not use it to work around pain or injury'). This is the strongest form of routing guidance and covers the main misuse case for a fitness-tool substitution helper.

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

get_lift_progressChart my lift progressA
Read-only
Inspect

Use this when the user asks how one of their lifts is progressing or wants it graphed, for example "how is my bench going" or "chart my squat over six months". It finds the lift in their Phorme log by the words they use and returns one point per session with the best set, estimated max and volume, the change over the period and their best session, and shows a chart card. It reads only and changes nothing. It needs a connected Phorme account. Weights are in pounds. If no lift matched it lists the lifts they have logged; ask which one they mean.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoHow many months back to look. Defaults to 6.
movementYesThe lift as the user said it, for example "bench", "back squat" or "RDL".

Output Schema

ParametersJSON Schema
NameRequiredDescription
bestNo
foundYes
changeNofrom_e1rm_lb, to_e1rm_lb, change_lb and change_pct over the period.
pointsNoOldest first: on, top_set, e1rm_lb, volume_lb, sets.
movementNoThe logged lift that matched, or null.
also_matchedNoOther logged lifts the words also matched.
logged_movementsNoWhen nothing matched: the lifts they log most.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description adds real context beyond that: it requires a connected Phorme account (auth prerequisite), reports weights in pounds (unit convention), and discloses the no-match fallback behavior. It does not mention rate limits or latency, but that is minor.

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?

A single dense paragraph, but well front-loaded: the usage trigger and example phrasings come first, followed by return shape, safety, prerequisites, units and the fallback path. Every sentence carries information; the only near-redundancy is 'It reads only and changes nothing' against the readOnly annotation.

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?

Because an output schema exists, return-value details need not be documented, yet the description still summarizes them. It covers the aspects an agent actually needs to invoke correctly: trigger phrasing, fuzzy movement matching, auth prerequisite, units, and the no-match recovery path.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: 'finds the lift in their Phorme log by the words they use' clarifies that 'movement' is a fuzzy natural-language match rather than an exact ID, and it notes weights are in pounds, which is not encoded in 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 verb+resource ('find the lift in their Phorme log... returns one point per session... shows a chart card') and backs it with concrete user-phrasing examples ('how is my bench going'). An agent can distinguish this analytics/charting tool from siblings like get_training_history or find_exercise_swap 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 an explicit trigger condition ('when the user asks how one of their lifts is progressing or wants it graphed') plus a worked fallback path when the lift is not matched — list logged lifts and ask which one. It does not name competing siblings (e.g. get_training_history for whole-log views), so routing against alternatives 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_phorme_programGet a Phorme programAInspect

Use this when the user picked one program from search_phorme_programs and wants its details. It returns the program and every session of its first week, plus a link to a page that describes it, and records the pick privately so Phorme can credit the coach. It never shows prices or starts a purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
program_idYesThe program id returned by search_phorme_programs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
accessYes
info_urlYesA page that describes the program. It has nothing to buy on it.
first_weekYesEvery session of the first week with its exercises and demo links.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description goes well beyond them by disclosing the non-obvious write side effect (the pick is recorded privately so the coach gets credit), the exact return scope (first week only, not the whole program), and two negative guarantees about pricing and purchasing. These are behaviors an agent could not infer from structured fields.

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 triggering condition, then what is returned, then the constraints. No sentence is redundant and nothing is buried.

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 one-parameter read/get tool with a full output schema, the description covers trigger, return scope, side effect and boundaries. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% for the single program_id parameter, whose schema description already states where the id comes from. The description merely repeats that provenance in narrative form and adds no format, length, or validity detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource (retrieve one Phorme program's details) and immediately scopes the payload: the program plus every session of its first week and a descriptive link. It is clearly distinguishable from the sibling search_phorme_programs because it names that tool as the source of the id.

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 trigger condition: 'when the user picked one program from search_phorme_programs and wants its details.' It also states the boundaries of what will happen ('never shows prices or starts a purchase'), so an agent knows this is not a purchase or pricing path.

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

get_planned_sessionsGet my planned Phorme sessionsA
Read-only
Inspect

Use this when the user asks what their Phorme plan has for today or the coming days, for example "what is my workout today". It returns each planned session with its exercises, sets, reps and the loads Phorme set from their own maxes. It reads only and changes nothing, including the plan. It needs a connected Phorme account. Weights are in pounds. Do not change the loads; for a different session, build one with preview_workout_import.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days ahead, starting today. Defaults to 7.

Output Schema

ParametersJSON Schema
NameRequiredDescription
planNoThe name of the plan they follow.
foundYes
sessionsNoIn date order: on, title, status, minutes and exercises with sets, target, load and note.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only claim is partly redundant, but the description adds genuinely new context: a connected Phorme account is required and weights are returned in pounds. That auth prerequisite and unit convention are not derivable from the structured fields, which lifts it above the annotated baseline.

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 condition and example, then constraints and the alternative — logical order with little waste. The 'reads only and changes nothing, including the plan' clause is slightly redundant against the annotations, keeping it short of perfect.

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-shape explanation is not required, yet the description still summarizes contents. With auth need, unit convention, usage trigger, and sibling routing all present, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'days' parameter is fully documented there (range, default 7), so the schema carries the burden. The description only implies a forward-looking window ('today or the coming days') without adding constraints or format detail beyond the schema, matching the baseline for high-coverage schemas.

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 (get planned Phorme sessions) and immediately scopes what a session contains (exercises, sets, reps, auto-set loads). It also explicitly routes away from the sibling preview_workout_import for non-plan sessions, so an agent can distinguish it 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?

Gives an explicit trigger ('when the user asks what their Phorme plan has for today or the coming days'), a concrete example utterance, and an exclusion ('Do not change the loads; for a different session, build one with preview_workout_import'). This is the when/when-not/alternative pattern in full.

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

get_saved_trainingGet saved Phorme trainingA
Read-only
Inspect

Use this when the user asks about a workout or program that a save tool already saved in this conversation, for example to get its Phorme link again. It returns the title and open link for training owned by the connected Phorme account and changes nothing. It needs the training_id returned by a save tool. It cannot list, search, edit or delete training.

ParametersJSON Schema
NameRequiredDescriptionDefault
training_idYesThe training_id returned by save_workout_to_phorme or save_program_to_phorme.
training_kindYesWhether the saved item is a workout or a program.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
statusYes
open_urlYesLink that opens the saved training in Phorme.
training_idYes
training_kindYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld=false/destructive=false, and the description usefully adds that it 'changes nothing,' that it only returns training owned by the connected account, and that it depends on an id produced earlier in the same conversation. This is meaningful context beyond the safety hints, though it says nothing about behavior when the id is stale or belongs to another account.

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 short sentences, front-loaded with the trigger condition, then return value, then prerequisite, then exclusions. No filler or repetition.

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 contents need not be over-explained, and the description still summarizes them (title and open link). With annotations covering safety and the schema covering both params, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema coverage is 100%, so both training_id and the training_kind enum are already documented in the schema. The description reinforces that training_id must come from a save tool, which is a mild provenance constraint, but adds no format or value semantics beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (retrieve a previously saved workout or program) and scopes it precisely to items 'a save tool already saved in this conversation.' It carves a clear niche against siblings like save_workout_to_phorme (the creator of the id) and get_phorme_program (account-level programs).

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 ('when the user asks about a workout or program that a save tool already saved in this conversation') and a concrete example use case (getting the Phorme link again). It also rules out list/search/edit/delete, but never names the sibling tool to use instead for those cases, so the routing is partial.

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

get_training_historyGet my Phorme training logA
Read-only
Inspect

Use this when the user asks about their own training logged in Phorme: what they did last time, how often they trained, their personal records, or a next workout built on their recent sessions. It returns their most recent logged workouts with each exercise's sets, best set, estimated max and volume, how many workouts they logged in the last 7 and 30 days, and their latest records. It reads only and changes nothing. It needs a connected Phorme account. Weights are in pounds. Answer from these numbers only. To build a next workout from it, pass that workout to preview_workout_import.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many recent workouts to return, newest first. Defaults to 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYesFalse when this account has no Phorme training yet.
recordsNoLatest personal records: movement, label, value and date.
workoutsNoNewest first: date, title, minutes and exercises with sets, best_set, e1rm_lb and volume_lb.
last_7_daysNo
last_30_daysNo
total_loggedNo

TDQS

A4.4/5.0
Behavior4/5

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

Adds real context beyond the annotations: it requires a connected Phorme account, weights are in pounds, results should be grounded ('Answer from these numbers only'), and it reads only/changes nothing. The 'reads only' clause partly restates readOnlyHint=true, so it is good rather than purely additive.

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 usage trigger, then return contents, then constraints and the sibling handoff. Dense and purposeful, though it restates return fields that the existing output schema already conveys, adding mild redundancy.

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

Completeness5/5

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

For a read-only, zero-required-param tool with a full output schema, the description covers everything an agent needs: when to use it, auth prerequisite, units, grounding rule, and routing to the import-preview sibling.

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?

Only one parameter (limit) and the schema documents it at 100% coverage including the default of 10. The description adds nothing about the limit, so this is the baseline for a fully schema-covered parameter.

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 combo (return the user's own logged training in Phorme) and enumerates the concrete questions it answers (last session, frequency, PRs, next-workout basis). This distinguishes it from siblings like get_planned_sessions, get_lift_progress and get_saved_training without needing their schemas.

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?

Opens with an explicit when-to-use trigger ('when the user asks about their own training logged in Phorme') and names a concrete downstream alternative: pass the result to preview_workout_import to build a next workout. Both the selection condition and the handoff are spelled out.

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

preview_program_importPreview program in PhormeAInspect

Use this when the user wants to turn a multiweek training program from this conversation into trackable Phorme training. It checks every week and workout, matches exercises to the Phorme movement library, and stores a private preview for 24 hours. It does not save training to any account. Show the user every warning and ask before calling save_program_to_phorme. Do not use it for a single workout, nutrition plans or medical questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
programYesThe multiweek program to preview, taken from this conversation. At most 500 workouts in total.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
warningsYesItems the user should review before saving.
exercisesNoEach exercise with its Phorme library match. Share the demo_url links with the user.
expires_atYesWhen the preview can no longer be saved, as an ISO 8601 time.
preview_idYesPass this to the matching save tool after the user confirms.
training_kindYes
warning_countYes
exercise_countYes
requires_confirmationYesAlways true. Ask the user before saving.
estimated_duration_minutesYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare the generic read/destructive/open-world flags, but the description adds substantive behavior: the preview is private, expires in 24 hours, nothing is saved to any account, every week and workout is validated, exercises are matched against the movement library, and all warnings must be surfaced before saving. That is exactly the pre-write workflow context an agent needs and cannot get from annotations.

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

Conciseness5/5

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

Five sentences, each doing distinct work: use case, behavior/TTL, non-persistence, required user confirmation, and exclusions. Front-loaded with the trigger condition and free of filler.

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

Completeness5/5

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

An output schema exists, so return values need not be described. Given the nested input, preview TTL, no-account guarantee and the confirmation handoff to save_program_to_phorme are all covered, 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.

Parameters3/5

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

Schema coverage is 100% with deep nested descriptions, so the schema documents the program structure fully and baseline is 3. The description only adds that the program is 'from this conversation' and that exercises get matched to the library, which is useful but modest added meaning over 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 verb and resource ('turn a multiweek training program ... into trackable Phorme training') and explicitly scopes it away from preview_workout_import and save_program_to_phorme by excluding single workouts. An agent can distinguish it from every sibling 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?

Gives an explicit when ('user wants to turn a multiweek program from this conversation into trackable training'), explicit when-not ('Do not use it for a single workout, nutrition plans or medical questions'), and the required follow-up step of asking before calling save_program_to_phorme. 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.

preview_sport_weekPlan a sport training weekA
Read-only
Inspect

Use this when the user plays a sport and wants their gym days for a week planned around it, for example two lifting days during basketball season. It picks the closest coach-built Phorme sport program and returns one week of sessions sized to the days the user has, with sets, reps, coach notes and a demo link for each exercise. It reads only and changes nothing in any account. If Phorme has no program for that sport it says so in match_quality and limits; never present another sport's program as a match. To save one session, pass it to preview_workout_import with origin "sport_week". Do not use it for injury rehab, team practice plans for children, or nutrition.

ParametersJSON Schema
NameRequiredDescriptionDefault
sportYesThe sport or position, for example "basketball", "volleyball" or "wide receiver".
season_phaseNoWhere the user is in their season, only if they said.
gym_days_per_weekYesGym days the user has this week. Ask when the user did not say.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sportYes
limitsYesWhat this week does not cover. Tell the user.
programYesThe coach-built program the week comes from.
sessionsYesOne entry per gym day, each with a title and exercises.
week_numberNo
match_qualityYesexact_sport: a program written for this sport. related: the closest program. none: a general athletic program.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'reads only and changes nothing in any account.' It earns credit for disclosing non-obvious behavior beyond the annotations: what happens when no program exists (match_quality and limits report it) and the rule never to present another sport's program as a match.

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

Conciseness4/5

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

The description is front-loaded with the triggering condition and the primary behavior, then layers routing and exclusions. It is on the longer side, but nearly every sentence carries distinct operational value; only the read-only restatement is somewhat redundant with the annotations.

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 3-parameter read-only tool with an output schema, the description covers everything an agent needs: when to invoke, what is returned (sets, reps, coach notes, demo link), the no-match fallback, exclusions, and the downstream save path. Return-value detail beyond this is handled by the output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents sport, season_phase, and gym_days_per_week, including the enum. The description adds only the general notion that output is 'sized to the days the user has' and never mentions season_phase, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: it selects the closest coach-built Phorme sport program and returns one week of gym sessions sized to the user's available days. This clearly separates it from siblings like preview_program_import, preview_workout_import, and search_phorme_programs.

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?

Opens with an explicit triggering condition (user plays a sport and wants a week of gym days planned around it) and gives a concrete scenario. It names three exclusions (injury rehab, children's team practice plans, nutrition) and routes the save path to preview_workout_import with origin "sport_week".

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

preview_workout_importPreview workout in PhormeAInspect

Use this when the user wants a single workout they can follow and track in Phorme: one written in this conversation, pasted from notes, or built to fit their time and equipment. It checks the workout, matches each exercise to the Phorme movement library with a demo link, flags anything that needs equipment the user did not list or runs past their time, and stores a private preview for 24 hours. It does not save training to any account. Show the user every warning and ask before calling save_workout_to_phorme. Do not use it for multiweek programs, nutrition plans, or pain and injury questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoUse "sport_week" when the workout is a session returned by preview_sport_week. Otherwise leave out.
workoutYesThe workout to preview, taken from this conversation.
time_limit_minutesNoMinutes the user said they have. Leave out when the user did not say.
available_equipmentNoEquipment the user said they have, for example ["dumbbells", "bench"] or ["none"]. Leave out when the user did not say.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
warningsYesItems the user should review before saving.
exercisesNoEach exercise with its Phorme library match. Share the demo_url links with the user.
expires_atYesWhen the preview can no longer be saved, as an ISO 8601 time.
preview_idYesPass this to the matching save tool after the user confirms.
training_kindYes
warning_countYes
exercise_countYes
requires_confirmationYesAlways true. Ask the user before saving.
estimated_duration_minutesYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only give readOnly=false/destructive=false/openWorld=false, but the description discloses the actual behavior: it validates the workout, matches exercises to the movement library with demo links, flags equipment/time violations, stores a private 24-hour preview, and explicitly does not save training to an account. The 24-hour retention and 'ask before saving' flow are behavioral facts the 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?

Front-loads the use case before capabilities and constraints, and every sentence carries distinct information (trigger, behavior, side effect, downstream step, exclusions). It runs five sentences and is slightly dense, but there is little 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?

An output schema exists, so return values need not be described. Given the complex nested workout schema, single-param requiredness, and the mutation-adjacent 24-hour preview, the description supplies the trigger, side effects, warning-handling expectation, and exclusions needed to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema documents all four params, setting a baseline of 3. The description adds meaning by explaining why time_limit_minutes and available_equipment matter (they drive the runs-past-time and equipment-not-listed warnings) and how origin ties to preview_sport_week, exceeding the schema's own text.

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 (preview/check) and resource (a single workout to follow and track in Phorme) and enumerates the accepted origins (written in conversation, pasted from notes, built to fit time/equipment). It clearly distinguishes itself from program-scale and other sibling tools by scoping to 'a single workout'.

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

Usage Guidelines5/5

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

Opens with an explicit when-to-use trigger, names the downstream alternative (save_workout_to_phorme) and the origin link to preview_sport_week, and closes with explicit exclusions ('Do not use it for multiweek programs, nutrition plans, or pain and injury questions'). Routing is unambiguous.

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

render_training_importShow Phorme training cardA
Read-only
Inspect

Use this to show the user a compact Phorme card after a save tool or get_saved_training has returned, or after preview_program_import. Pass the matching fields from that result. It only displays the values you pass. It reads and changes nothing in Phorme.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTraining title from the tool result.
statusNoUse "preview" after a preview tool and "saved" after a save tool or get_saved_training.
open_urlNoThe open_url from a save tool or get_saved_training. Leave out for previews.
training_kindNo
warning_countNo
exercise_countNo
estimated_duration_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNoTraining title from the tool result.
statusNoUse "preview" after a preview tool and "saved" after a save tool or get_saved_training.
open_urlNoThe open_url from a save tool or get_saved_training. Leave out for previews.
training_kindNo
warning_countNo
exercise_countNo
estimated_duration_minutesNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/destructiveHint, but the description adds the non-obvious behavioral fact that it only renders the values supplied and neither fetches nor mutates anything in Phorme. That is real context beyond the annotations, though it says nothing about rendering failure or validation behavior.

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

Conciseness5/5

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

Three short sentences, front-loaded with the purpose and trigger, then the input sourcing, then the safety clarification. No sentence 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, the description needn't explain return values, and it covers the trigger, input source, and side-effect profile. The remaining gap is the undocumented non-enum parameters, which is minor for a display-only 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 43%, below the 50% threshold, so the description should compensate more than it does. It only says to pass the matching fields from the prior result; it adds no meaning for training_kind, warning_count, exercise_count, or estimated_duration_minutes.

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: show the user a compact Phorme training card. It also distinguishes this display-only tool from the tools that produce its inputs (save tools, get_saved_training, preview_program_import), so an agent can pick it 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 Guidelines4/5

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

It gives explicit trigger conditions: call after a save tool or get_saved_training has returned, or after preview_program_import, and pass the matching fields from that result. It names the source tools clearly but does not state when not to use it or what to do if no such result exists.

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

save_program_to_phormeSave program to PhormeA
Idempotent
Inspect

Use this only after preview_program_import returned a preview and the user clearly said to save it. It saves that program to the connected Phorme account as a private program and returns a link that opens it in Phorme; share that link with the user. It needs a connected Phorme account with the training:write permission and a Phorme membership that already includes programs. If the account does not have that membership the tool says so and saves nothing. It never starts a purchase. Retrying with the same idempotency_key does not create a second copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
preview_idYesThe preview_id returned by preview_program_import.
confirmationYesSet to true only after the user clearly confirmed this save in the conversation.
idempotency_keyYesA unique string for this save. Reuse the same value when retrying so no second copy is created.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
open_urlYesLink that opens the saved training in Phorme.
training_idYes
training_kindYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the description's main added value is the undisclosed operational context: it requires a connected account with training:write plus a membership that already includes programs, and it fails loudly with no side effect otherwise. It also confirms no purchase flow is triggered, which no annotation conveys.

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 precondition sentence and each sentence carries distinct information. Minor redundancy: the retry/idempotency sentence restates both idempotentHint and the schema's own description of idempotency_key, and the link-sharing instruction is stated twice in effect.

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, yet the description usefully notes a link is returned and to share it. Combined with permission requirements, failure behavior, and idempotency, an agent has everything needed to invoke this mutation correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema, including the idempotency_key reuse rule. The description only reinforces the retry semantics rather than adding new parameter meaning. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource (saves a previewed program to the connected Phorme account as a private program) and names the sibling it depends on, preview_program_import. An agent can distinguish it from preview_program_import and save_workout_to_phorme 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?

Gives an explicit gating condition ('only after preview_program_import returned a preview and the user clearly said to save it') and an explicit exclusion ('It never starts a purchase'). The alternative path is named, so the when/when-not is fully determined.

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

save_workout_to_phormeSave workout to PhormeA
Idempotent
Inspect

Use this only after preview_workout_import returned a preview and the user clearly said to save it. It saves that workout to the connected Phorme account as a private workout and returns a link that opens it in Phorme; share that link with the user. It needs a connected Phorme account with the training:write permission. Retrying with the same idempotency_key returns the same saved workout and does not create a second copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
preview_idYesThe preview_id returned by preview_workout_import.
confirmationYesSet to true only after the user clearly confirmed this save in the conversation.
idempotency_keyYesA unique string for this save. Reuse the same value when retrying so no second copy is created.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
open_urlYesLink that opens the saved training in Phorme.
training_idYes
training_kindYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing the required OAuth scope (training:write), the created resource's visibility (private workout), the return payload (a link to share with the user), and retry semantics for idempotency_key. Annotations only cover the generic write/idempotent/safe profile; the description supplies the operational detail an agent needs.

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 short sentences, each carrying distinct content: prerequisite gate, action and output, permission requirement, retry semantics. The gating condition is front-loaded, and nothing is redundant with structured fields.

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 write tool with a confirmation gate, an output schema present, and full schema coverage, the description covers the preconditions, permissions, side effects, and downstream instruction (share the link). 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.

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, including the idempotency_key reuse rule and the confirmation gate. The description restates the idempotency behavior but adds no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('saves that workout to the connected Phorme account') and scopes it precisely as the second half of a two-step flow. It clearly distinguishes itself from preview_workout_import, which it names as the prerequisite.

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

Usage Guidelines5/5

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

Explicitly gives the when-to-use condition ('only after preview_workout_import returned a preview and the user clearly said to save it') and names the alternative tool the agent should have already called. It also implies the when-not condition: do not call before a preview and explicit user confirmation.

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

search_phorme_programsSearch Phorme programsA
Read-only
Inspect

Use this when the user asks for an existing coach-built training program for their sport or goal, for example a structured volleyball program. It returns up to five matching Phorme programs, each with a sample session from its first week that the user can try now, and changes nothing. Results are ordered by fit and never by commission. Say that the full program comes with a Phorme membership only if the user asks; never show prices or start a purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoTraining goal, for example "build strength".
sportNo
creatorNoCoach or creator name, only if the user named one.
equipmentNoEquipment the user has.
experienceNoTraining level, for example "beginner".
schedule_daysNoTraining days per week.
duration_weeksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitsYes
programsYesMatching programs, best fit first, each with title, coach, weeks, sample_session and access.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the description's 'changes nothing' is largely redundant. It does add genuinely new behavioral context beyond the annotations: result count cap (five), a sample session from week one, fit-based (non-commission) ranking, and the membership/pricing disclosure policy.

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?

Purpose and use condition are front-loaded in the first sentence, followed by return shape and then policy constraints. Four sentences for a policy-laden tool is justified, though 'changes nothing' mildly restates the readOnly annotation.

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 spelled out, yet the description still summarizes the payload (up to five programs with a first-week sample). Combined with annotations and schema, an agent has enough to call it correctly; only edge behavior (empty results, what happens if no sport/goal given) is unaddressed.

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 71%, so most parameters (goal, creator, equipment, experience, schedule_days) are already documented in the schema. The description only implicitly maps to sport and goal ('for their sport or goal') and adds no format, default, or combination guidance for the seven optional filters. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb (search/find), the resource (coach-built Phorme training programs) and the trigger (user asks for a program for their sport or goal), with a concrete example ('structured volleyball program'). It is clearly distinguishable from siblings like get_phorme_program (fetch a known program) and save_program_to_phorme (persist one).

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 use condition ('when the user asks for an existing coach-built training program for their sport or goal') plus negative guidance about pricing and purchase flows. It stops short of naming alternatives such as get_phorme_program for retrieving a specific program, so it is clear context without full sibling routing.

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. 13 tool updates
    • First observedfind_exercise_swap
    • First observedget_lift_progress
    • First observedget_phorme_program
    • First observedget_planned_sessions
    • First observedget_saved_training
    • First observedget_training_history
    • First observedpreview_program_import
    • First observedpreview_sport_week
    • First observedpreview_workout_import
    • First observedrender_training_import
    • First observedsave_program_to_phorme
    • First observedsave_workout_to_phorme
    • First observedsearch_phorme_programs

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Connect Pelaris to any MCP-compatible AI assistant for personalised fitness coaching. Plan training programs, log workouts, track benchmarks, manage goals, and get data-driven coaching insights. Supports science-based methodologies including 5/3/1, Pfitzinger, polarised training, and more. OAuth 2.0 authentication with Streamable HTTP transport. Documentation: https://pelaris.io/integrations Web
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to connect to a privacy-first, self-hostable workout planning and training log, allowing coaching agents to preview and apply program changes while accessing training data through OAuth-protected endpoints.
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources