Skip to main content
Glama

Server Details

Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.3/5 across 20 of 20 tools scored. Lowest: 3.3/5.

Server CoherenceA
Disambiguation4/5

Most tools have clearly distinct purposes, but the read_profile_* family (read_profile_sections, read_profile_change_history, read_profile_change_detail) could cause some confusion despite their different roles. The preview/commit pairs are well-separated by action verbs.

Naming Consistency5/5

Tool names follow a consistent snake_case verb_noun pattern (get_, create_, delete_, preview_, commit_, read_, restore_, save_). The only deviation is whoami, which is a standard single-word command.

Tool Count4/5

20 tools is slightly above the typical 3-15 well-scoped range, but the domain (running coach with profile, goals, calendar, history, and strategy) justifies the breadth. Still feels a bit heavy compared to simpler servers.

Completeness4/5

The tool set covers core workflows: profile/rules management, goal/result editing, calendar events (notes and workouts), training history, and strategy saving. Minor gap: no direct read tool for the saved strategy, and some delete/update operations are folded into commit tools.

Available Tools

20 tools
commit_goal_result_changeAInspect

Commit one previewed goal, start, activity-link, or result change. Call only after the user explicitly confirms the exact preview from preview_goal_result_change. The server rejects stale data and returns the new authoritative editing state.

ParametersJSON Schema
NameRequiredDescriptionDefault
changeIdYesPreview id returned by preview_goal_result_change. Commit only after the user confirms that exact preview.
Behavior4/5

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

With no annotations provided, the description carries the full burden. It reveals that the server rejects stale data and returns the new authoritative editing state. For a commit operation, this adequately describes the outcome and a key constraint. It does not explicitly state it modifies data, but 'commit' implies persistence, and 'rejects stale data' hints at state mutation.

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

Conciseness5/5

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

The description consists of two efficient sentences with no redundant words. The first sentence immediately states the action and scope, while the second sentence provides critical usage constraints and outcome. Every sentence earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, low complexity), the description covers the essential aspects: what it does, when to call, and what happens with stale data. It mentions the return (editing state). It does not detail error scenarios or require additional context beyond what is provided.

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?

The input schema has 100% description coverage for the single parameter 'changeId', detailing its source and required usage. The description adds no additional parameter meaning beyond the schema. Under the rule that high schema coverage yields a baseline of 3, this score is appropriate.

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

Purpose5/5

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

The description clearly states it commits a previewed change, listing the types of changes (goal, start, activity-link, result). It distinguishes itself from its sibling 'preview_goal_result_change' by specifying it is the commit step after preview. The purpose is specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states when to call: 'only after the user explicitly confirms the exact preview from preview_goal_result_change'. It also warns about stale data rejection. However, it does not provide explicit when-not-to-use scenarios or alternative tools beyond the mention of preview_goal_result_change.

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

commit_profile_section_changeAInspect

Commit a previously previewed rules or profile memory change. Call this only after the user explicitly confirms the exact full text shown for that preview. If preview returned noChange=true, do not call commit. The server updates the profile only if the section hash still matches the preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
changeIdYesPreview change id returned by preview_profile_section_change. Call only after the user explicitly confirms the exact full text shown for this preview.
Behavior4/5

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

With no annotations available, the description carries the disclosure burden. It reveals that the server updates the profile only if the section hash still matches the preview, adding behavioral context. It does not explicitly state it's a write operation (though 'commit' implies it) or describe error scenarios, but the hash check disclosure is useful.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose, and every sentence provides essential information without redundancy or filler. The structure is highly efficient.

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?

Given the simplicity of the tool (one parameter, no output schema, no annotations), the description covers key aspects: preconditions (user confirmation, noChange check) and the conditional update behavior. It lacks mention of the return value or what happens on hash mismatch, but for a commit action this is adequate.

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%, and the parameter description already includes the requirement to call only after explicit user confirmation. The tool description reinforces this but does not add new meaning beyond what the schema provides, 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?

The description clearly identifies the action ('Commit') and the resource ('previously previewed rules or profile memory change'), using a specific verb+resource structure. It distinguishes this tool from siblings by focusing on committing a preview, unlike other tools that preview or restore changes.

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 usage guidance is provided: 'Call this only after the user explicitly confirms the exact full text shown for that preview' and 'If preview returned noChange=true, do not call commit.' This clearly delineates when to use the tool and when not to, matching the requirement.

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

create_note_eventAInspect

Create or update NOTE events in Intervals. dry_run is required: false writes the note, true previews only. Send category=NOTE and external_id=note:YYYY-MM-DD:. Use all-day local times for normal notes, keep description short, and omit type, moving_time, icu_training_load, and workout_doc. For weekly review notes or other notes that apply to the whole week, send for_week=true; omit it or use false for ordinary notes. Do not create a seven-day date range for weekly notes; keep one all-day anchor date and use for_week=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventsYes
dry_runYesRequired. false writes to Intervals.icu; true only previews without writing.
Behavior5/5

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

Without annotations, the description fully discloses behavior: dry_run explicitly distinguishes between writing and previewing, and it details date conventions, field omissions, and weekly note handling. It also warns against creating a seven-day range for weekly notes, which is critical to using the tool correctly.

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

Conciseness5/5

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

The description is dense but every sentence earns its place. It front-loads the core purpose, then systematically addresses dry_run, external_id, dates, weekly notes, and field omissions in a compact format without 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?

Given the tool's complexity and lack of annotations/output schema, the description is remarkably complete. It covers key parameters, edge cases (weekly notes), constraints (omit certain fields), and behavioral distinctions (dry_run), leaving no major gaps for the agent to infer blindly.

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?

Although the schema covers 50% of parameters, the description adds substantial meaning: it explains the role of dry_run, the external_id pattern, the for_week flag, and the requirement to use all-day local times. It also instructs to omit fields like type, moving_time, icu_training_load, and workout_doc, which are absent from the schema but important for correct behavior.

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

Purpose5/5

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

The description opens with 'Create or update NOTE events in Intervals,' which precisely identifies the action, resource, and scope. It clearly distinguishes itself from siblings like create_plan_event and delete_note_events by focusing on NOTE events with a specific external_id pattern.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: it specifies the required category, external_id format, all-day date usage, and the for_week flag for weekly review notes. However, it does not explicitly mention alternatives or exclusions, such as saying 'for plan events use create_plan_event instead,' so it falls short of 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.

create_plan_eventAInspect

Create or update planned WORKOUT events in Intervals. For changes to an existing STAS workout, keep the same external_id and call this tool again; do not delete the day/window just to edit time, name, note, load, color, or workout_builder. This tool is self-contained; do not look for SKILL.md or examples in the athlete's calendar. dry_run is required: false writes the event, true previews only. Send activity_type as Run/Ride/Swim/Workout/WeightTraining/Yoga/Pilates/Stretching/Walk/Hike/Elliptical/NordicSki/HighIntensityIntervalTraining/Other, stas_note for the human workout note, and external_id=plan:YYYY-MM-DD:. Do not send low-level Intervals fields category, type, sport, workoutType, target, description, workout_doc, icu_workout, filename, or file_contents. The server maps activity_type to Intervals type and category=WORKOUT and infers Intervals target=HR/PACE/POWER from Run/Ride workout_builder only. Use local datetimes without a timezone suffix, e.g. 2026-05-13T08:00:00, not 2026-05-13T08:00:00+03:00. workout_builder is mandatory for any interval/key workout save, mainly Run/Ride intervals; never save intervals as prose-only. Omit workout_builder only for easy/simple workouts without structured steps. If validation fails, inspect error.data.issues[].path, fix that exact event field, and retry only after changing the invalid field. If you use workout_builder, do not include ## STAS or ## Workout; the server adds wrappers. Builder headers and repeat headers are plain lines without '-', e.g. 'Warmup', 'Main Set 5x', 'Cooldown'. Actual step lines start flush-left with '- ' and contain duration/distance plus a target, e.g. '- 1km 4:25/km-4:35/km Pace', '- 10m 75%', or '- Recovery 90s Z1 HR'. For swim workouts, distance-led steps such as '- 400m easy' and '- 6 x 50m build' are allowed. For HR-only workouts, every structured step target should use HR syntax like '- 10m Z2 HR' or '- 3m Z4 HR'. Do not write '- Warmup' followed by indented child bullets. Use '1km' or '1000mtr' for run/ride meters; bare 400m is allowed for swim but m means minutes in run/ride builder text. icu_training_load is accepted for planned workouts, but Intervals.icu can still return icu_atl/icu_ctl as null or exclude/partially weight non-cardio types in Fitness/Fatigue depending on athlete settings. After writing a structured key workout, read it back with get_planned_events and check workout_doc.steps is non-empty before claiming it is structured. Example real interval write arguments. Replace the date/time and paces, but keep this exact JSON shape. Use activity_type, stas_note, and mandatory workout_builder for interval/key workout saves. workout_builder contains only native Intervals.icu Workout Builder text: repeat headers do not start with "-", step lines are flush-left, and nested Markdown bullets are forbidden. {"dry_run":false,"events":[{"activity_type":"Run","name":"Intervals: 5x1000m","start_date_local":"2026-05-13T08:00:00","end_date_local":"2026-05-13T08:55:00","stas_note":"Goal: controlled interval work without overreaching.\nRule: if HR rises too fast or form breaks, stop after 4 reps.","workout_builder":"Warmup\n- 15m Z2 HR\n\nMain Set 5x\n- 1km 4:25/km-4:35/km Pace\n- Recovery 90s Z1 HR\n\nCooldown\n- 10m Z1 HR","external_id":"plan:2026-05-13:intervals-5x1000m","color":"green","moving_time":3300}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
eventsYesExample real interval write arguments. Replace the date/time and paces, but keep this exact JSON shape. Use activity_type, stas_note, and mandatory workout_builder for interval/key workout saves. workout_builder contains only native Intervals.icu Workout Builder text: repeat headers do not start with "-", step lines are flush-left, and nested Markdown bullets are forbidden. {"dry_run":false,"events":[{"activity_type":"Run","name":"Intervals: 5x1000m","start_date_local":"2026-05-13T08:00:00","end_date_local":"2026-05-13T08:55:00","stas_note":"Goal: controlled interval work without overreaching.\nRule: if HR rises too fast or form breaks, stop after 4 reps.","workout_builder":"Warmup\n- 15m Z2 HR\n\nMain Set 5x\n- 1km 4:25/km-4:35/km Pace\n- Recovery 90s Z1 HR\n\nCooldown\n- 10m Z1 HR","external_id":"plan:2026-05-13:intervals-5x1000m","color":"green","moving_time":3300}]}
dry_runYesRequired. false writes to Intervals.icu; true only previews without writing.
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does so thoroughly: dry_run semantics, server-side mapping from activity_type to Intervals type/category, target inference, local datetime requirement, server-added wrappers, and verification via get_planned_events are all explicitly described.

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

Conciseness2/5

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

The description is a very long single paragraph with redundant content: the example JSON is repeated multiple times (in the description, the schema's description, and the events property), and guidance about workout_builder is repeated. It lacks visual structure like bullets or sections, making it harder to parse despite the useful content. Most sentences earn their place, but conciseness is poor.

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 there is no output schema, the description covers the full context: validation error format, post-write verification steps, required/forbidden fields, workout_builder syntax, and update semantics. It is complete for a complex mutation tool and leaves no critical gaps.

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 coverage is 100% (baseline 3), but the description adds substantial meaning beyond the schema: it enumerates allowed activity_type values, explains external_id format, details workout_builder syntax rules, clarifies dry_run effects, and notes icu_training_load caveats. The description significantly enriches parameter understanding.

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

Purpose5/5

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

The description opens with 'Create or update planned WORKOUT events in Intervals,' a specific verb+resource statement that clearly defines the tool's primary function. It also distinguishes from siblings like create_note_event by emphasizing 'planned WORKOUT events' and the update semantic, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides extensive usage guidance: it explicitly states when to update an existing event (keep same external_id, don't delete the day), when dry_run should be used, when workout_builder is mandatory vs optional, and how to handle validation errors ('inspect error.data.issues[].path'). This goes well beyond typical alternatives.

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

delete_note_eventsAInspect

Delete STAS note events. For one specific note, pass external_ids with the exact note:YYYY-MM-DD: id; external_id as one string is accepted as a compatibility alias. Use oldest/newest window deletion only when replacing a whole note set in that date window. Do not delete user-created notes without a note: external_id. dry_run is required: false deletes, true previews only.

ParametersJSON Schema
NameRequiredDescriptionDefault
newestNoEnd date for full-window replacement deletes. Required unless external_ids is provided.
oldestNoStart date for full-window replacement deletes. Required unless external_ids is provided.
dry_runYesRequired. false writes to Intervals.icu; true only previews without writing.
external_idNoCompatibility alias for deleting one exact STAS event id. Prefer external_ids for multiple ids.
external_idsNoExact STAS event ids to delete. Use this for deleting specific workouts or notes without clearing the whole day/window.
Behavior5/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It comprehensively covers key behaviors: the required dry_run parameter (false deletes, true previews only), the semantics of external_id as a compatibility alias, and the safety constraint about user-created notes. It also clarifies the window-deletion use case. This goes far beyond the bare function.

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

Conciseness5/5

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

The description is three sentences and every sentence adds unique value. It front-loads the purpose, then details usage modes and safety rules. No fluff or redundancy—exemplary conciseness.

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 five parameters and no output schema, the description covers the essential operational aspects: how to delete one vs. many events, when to use window deletion, and the mandatory dry_run flag. It also includes a critical safety warning. Given its complexity, the description is fully complete for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100% and each parameter already has a description, so the baseline is 3. The description adds meaning beyond the schema by explaining the relationship between external_id and external_ids (alias vs. preferred form), when to use window deletion, and the required dry_run behavior. This enriches but does not fully redefine the schema, meriting a 4.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Delete STAS note events.' This clearly distinguishes it from sibling tools like delete_plan_events and create_note_event. It also narrows the scope by contrasting single-event deletion via external_ids vs. whole-window deletion, leaving no doubt about the tool's function.

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

Usage Guidelines4/5

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

The description provides strong usage context: it explicitly says to use external_ids for one specific note, and to use oldest/newest window deletion only for replacing a whole note set. It also warns against deleting user-created notes without a note: external_id. However, it does not name alternative tools (e.g., 'use delete_plan_events for plan events'), so while clear, it lacks explicit exclusions.

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

delete_plan_eventsAInspect

Delete STAS plan events. For one specific workout, pass external_ids with the exact plan:YYYY-MM-DD: id; external_id as one string is accepted as a compatibility alias. Use oldest/newest window deletion only when the user is replacing the whole STAS plan in that date window. Do not use window deletion for simple edits; update with create_plan_event using the same external_id instead. dry_run is required: false deletes, true previews only.

ParametersJSON Schema
NameRequiredDescriptionDefault
newestNoEnd date for full-window replacement deletes. Required unless external_ids is provided.
oldestNoStart date for full-window replacement deletes. Required unless external_ids is provided.
dry_runYesRequired. false writes to Intervals.icu; true only previews without writing.
external_idNoCompatibility alias for deleting one exact STAS event id. Prefer external_ids for multiple ids.
external_idsNoExact STAS event ids to delete. Use this for deleting specific workouts or notes without clearing the whole day/window.
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains the required dry_run flag behavior ('false deletes, true previews only') and the distinction between exact id deletion and window replacement. It also reveals that external_id is a compatibility alias for external_ids, which is a behavioral nuance not obvious from the schema 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?

The description is three sentences, front-loaded with the core action and then progressively adding usage constraints and the dry_run requirement. Every sentence contributes necessary information with zero filler, making it easy to parse and apply.

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?

The tool has 5 parameters and no output schema, but the description covers all invocation modes, the required dry_run behavior, and when to use window deletion versus exact id deletion. It is complete enough for an agent to decide when to use this tool and how to invoke it correctly, though it doesn't describe return values or edge cases like deleting note events alongside plan events.

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%, providing baseline 3. The description adds meaningful semantics beyond the schema: it explains that external_id is a compatibility alias, clarifies that oldest/newest are for full-window replacement only, and advises preferring external_ids for multiple ids. This adds contextual value beyond raw parameter definitions.

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

Purpose5/5

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

The description opens with a specific verb+resource phrase: 'Delete STAS plan events.' It clearly distinguishes from sibling delete_note_events by specifying 'plan events' and further explains the exact id format (plan:YYYY-MM-DD:<slug>). This makes the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly states when to use each mode: 'Use oldest/newest window deletion only when the user is replacing the whole STAS plan in that date window.' It also provides an exclusion: 'Do not use window deletion for simple edits; update with create_plan_event using the same external_id instead.' This is excellent guidance that prevents misuse.

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

get_activity_detailAInspect

Load a compact read-only passport for one completed workout after identifying its training_id with get_trainings. Use for detailed one completed workout questions about intervals, laps, splits, terrain, weather, efforts, segments, and data quality. The response omits source payloads, route coordinates, latlng, and raw stream arrays.

ParametersJSON Schema
NameRequiredDescriptionDefault
training_idYesTraining id returned by get_trainings. Load get_trainings first to identify the exact workout.
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosure. It states the tool is read-only and compact, and explicitly lists what the response omits (source payloads, route coordinates, latlng, raw stream arrays). This gives valuable behavioral context, though it does not cover error handling or authentication.

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

Conciseness5/5

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

The description is two sentences, front-loaded with purpose, and every sentence adds distinct value: what it does, when to use it, and what it omits. No fluff or repetition.

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?

Given the low complexity (one required parameter, no output schema), the description is quite complete. It explains the tool's scope, usage context, and key omissions. A small gap is the lack of any detail about the return structure or error behavior, but for a simple read-only detail tool this is acceptable.

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?

The schema has 100% coverage for the single parameter training_id, and its description matches the tool description's mention of getting the ID from get_trainings. The tool description adds no additional parameter semantics beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool loads a compact read-only passport for one completed workout, with a specific verb and resource. It distinguishes itself from sibling tools like get_trainings by focusing on a single workout and listing the types of details provided (intervals, laps, splits, etc.).

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

Usage Guidelines4/5

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

The description gives explicit guidance to use this tool after identifying the training_id with get_trainings, and says it is for detailed one-workout questions. It does not explicitly name alternatives or when-not-to-use cases, but the omission of raw data implicitly warns against using it for that purpose.

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

get_editable_goals_resultsAInspect

Read the complete bounded editing state for general goals, calendar-linked starts, race results, standalone results, and legacy results. Stable public IDs and dataVersion are required for every later preview. This tool does not change anything.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

With no annotations, the description bears the full burden. It correctly states the tool is read-only and that it provides data required for previews. However, it omits details like authentication needs, side effects, or error conditions beyond the stated context.

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

Conciseness5/5

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

The description consists of two efficient sentences. The first sentence clearly states the function, and the second adds essential context about stable IDs and read-only behavior. No unnecessary words or repetition.

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?

Given the tool has no parameters and no output schema, the description is reasonably complete. It covers the tool's purpose, read-only nature, and a usage hint. However, it does not define 'bounded editing state' or clarify the output structure, which could be beneficial for an agent.

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 input schema has zero parameters, so schema description coverage is 100%. According to the guidelines, this merits a baseline of 4. The description does not need to add parameter information, and it does not.

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

Purpose4/5

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

The description clearly states the verb 'Read' and specifies the resource as 'complete bounded editing state' for multiple goal and result types. It distinguishes the tool's purpose for editing state, but does not explicitly differentiate it from siblings like 'get_current_goals_races_results' or 'preview_goal_result_change'.

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

Usage Guidelines3/5

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

The description implicitly suggests using this tool before preview operations by stating that stable public IDs and dataVersion are required for later previews. It also confirms it is read-only ('does not change anything'), but does not give explicit when-to-use or when-not-to-use guidance compared to other tools.

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

get_goal_activity_candidatesAInspect

Read safe nearby activity candidates for one exact start. Use the returned opaque selectionId when previewing result_link_activity. This tool does not change the start, activity, or result.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalPublicIdYesStable public ID of one event goal returned by get_editable_goals_results.
Behavior4/5

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

With no annotations provided, the description explicitly states 'This tool does not change the start, activity, or result', making it clear that the tool is non-destructive and read-only. It adds this behavioral context beyond what annotations would provide, though it lacks details on authorization or error handling.

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

Conciseness5/5

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

The description consists of three concise sentences, each adding value: reading candidates, using the output, and confirming non-destructiveness. It is front-loaded with purpose and avoids redundancy.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description explains the purpose and output usage (opaque selectionId). Missing details on the return structure or error conditions, but overall adequate for selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter goalPublicId. The tool description adds no additional parameter meaning beyond the schema's description, which is sufficient. Baseline score of 3 is appropriate as no extra semantic value is provided.

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

Purpose5/5

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

The description clearly states the verb 'read' and the resource 'safe nearby activity candidates for one exact start'. It distinguishes from siblings by specifying the context of activity candidates for a goal and references the output usage for another tool.

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

Usage Guidelines4/5

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

The description explains how to use the output (opaque selectionId for previewing result_link_activity), providing clear context. However, it does not explicitly mention when to use this tool over siblings like get_activity_detail or get_editable_goals_results, nor does it include when-not-to-use conditions.

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

get_planned_eventsAInspect

Read planned events from the Intervals calendar in a date window. Use this before rewriting or replacing an existing STAS plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
newestYes
oldestYes
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'Read', which implies a safe read operation, but does not disclose behavior such as auth requirements, return format, pagination, or what exactly constitutes a 'planned event' or 'STAS plan'. The special-purpose context is vague, leaving the agent with gaps in understanding.

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 tightly written sentences. The first sentence front-loads the action and scope; the second provides a clear usage directive. No wasted words.

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

Completeness2/5

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

The tool is simple with only two parameters, but the absence of annotations and output schema means the description should provide more context. It lacks details on what the returned data looks like, how to interpret 'planned events', and the meaning of 'STAS plan', making the description incomplete for an agent unfamiliar with the domain.

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%, so the description must compensate. It mentions 'date window' which loosely maps to the oldest and newest parameters, but it does not explain their semantics (e.g., inclusive/exclusive, required, format beyond the regex). The agent cannot infer parameter purpose from the description alone.

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

Purpose5/5

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

The description clearly states a specific action ('Read') on a specific resource ('planned events from the Intervals calendar') with a defined scope ('in a date window'). This distinguishes it from sibling tools like create_plan_event and delete_plan_events.

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

Usage Guidelines4/5

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

The phrase 'Use this before rewriting or replacing an existing STAS plan' explicitly provides a usage context. It implies that this is a prerequisite read operation for modification tasks, though it does not explicitly mention when not to use it or name alternatives.

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

get_trainingsAInspect

Load one bounded, size-safe list of completed workouts. Default mode is a rich index for chronology, load, reports, compact summaries, and choosing training_id. Set full=true only for analysis-rich comparison across multiple workouts; it adds a bounded compact interval projection. For one selected workout, use get_activity_detail instead of full=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoOptional analysis-rich list mode for comparing multiple completed workouts in a bounded date window. It adds a size-safe compact interval projection, but is not raw data and is not the detailed view for one workout. Omit it when locating/listing workouts or choosing a training_id; use get_activity_detail after selecting one exact workout.
limitNoMax trainings per page. Server cap is 50.
newestNoEnd boundary date in YYYY-MM-DD, exclusive. To load one date, set newest to the next calendar date, for example oldest=2026-06-21 and newest=2026-06-22.
oldestNoStart boundary date in YYYY-MM-DD, inclusive.
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the list is bounded and size-safe, that full mode adds a 'bounded compact interval projection' and is 'not raw data', and that default mode returns a 'rich index' with chronology, load, reports, and compact summaries. This gives a good sense of behavior and limitations, though it doesn't detail exact error conditions or response format.

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 purpose, then mode guidance, then an alternative recommendation. Every sentence contributes meaningful guidance with no filler or redundancy.

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

Completeness4/5

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

For a read-only list tool with no output schema and no annotations, the description covers the essential context: purpose, two usage modes, when to use alternatives, and the safety/boundedness. It could mention pagination or date boundaries, but the schema already covers parameters, and the description adds enough strategic context.

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 baseline is 3. The description adds value beyond the schema by explaining that full=true is for multi-workout comparison and is not for single-workout detail, and by framing default mode as a way to locate workouts and choose training_id. This contextualizes the parameters without repeating them.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Load one bounded, size-safe list of completed workouts.' It clearly distinguishes from sibling get_activity_detail by stating 'For one selected workout, use get_activity_detail instead of full=true.' This goes beyond a simple restatement and clearly identifies the tool's role.

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

Usage Guidelines5/5

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

The description gives explicit guidance: use default mode to find workouts and pick training_id, use full=true only for analysis-rich comparison across multiple workouts, and use get_activity_detail for a single workout. This not only states when to use the tool but also explicitly tells when not to use it and names the alternative.

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

get_user_summaryBInspect

Start here for most conversations. Load the athlete's profile, goals, rules, recent load, current fitness context, performance evidence, optional bounded historical signals, planning guidance, and persistent STAS memory opportunities.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNo
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a read-only operation ('Load'), but does not explicitly state safety or side effects. The mention of 'persistent STAS memory opportunities' is ambiguous and could suggest memory-related side effects without clarification.

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?

One sentence, front-loaded with the main usage directive. It lists many data categories but remains concise; however, it could be slightly more structured for readability.

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

Completeness3/5

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

The tool is simple (1 optional param, no output schema). The description gives a rich overview of what data is loaded, but misses parameter guidance and return format. It's adequate as a starting point but has clear gaps.

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

Parameters1/5

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

The schema has a single 'section' parameter with enum values (profile, history, evidence, pace, plan) and 0% description coverage. The description does not mention the parameter or explain how to choose a section, failing to compensate for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states the tool loads comprehensive athlete context across many dimensions (profile, goals, rules, load, fitness, evidence, planning, STAS memory). It uses specific action verb 'Load' and names the resource, distinguishing it as the summary tool to start with.

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?

Explicitly says 'Start here for most conversations', giving a strong when-to-use directive. It doesn't mention alternatives or exclusions, but the context is clear for an initial data-loading tool.

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

preview_goal_result_changeAInspect

Preview one exact change to a general goal, calendar-linked start, activity pairing, race result, standalone result, or legacy result. Always load get_editable_goals_results first and send its exact dataVersion. This never saves. Show the user the exact preview, including calendar/activity effects, and ask for explicit confirmation before commit_goal_result_change.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesOne exact goal, start, activity-link, or result change. Broad replace-all writes are not supported.
expectedDataVersionYesExact dataVersion returned by get_editable_goals_results. A stale version is rejected.
Behavior4/5

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

With no annotations, the description fully covers behavioral traits: it states the tool never saves, previews effects including calendar/activity changes, and is read-only. This is sufficient for an agent to understand it is safe to call without side effects. The only minor gap is the lack of detail on the preview output format.

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

Conciseness5/5

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

The description is extremely concise: three sentences, no repetition, and all information is essential. The first sentence captures purpose, the second states the prerequisite, and the third gives usage instructions. Every word earns its place.

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

Completeness4/5

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

Given the tool's complexity (14 command variants) and the absence of an output schema, the description covers the key points: purpose, prerequisite, non-saving nature, and the need to show preview to the user. It does not detail the preview's structure, but the primary output is meant for user presentation, so the agent's role is clear enough. The description is sufficiently complete 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 100%, and the description adds significant value beyond the schema: it mandates loading get_editable_goals_results and clarifies that the command must represent exactly one change (not a bulk replace). The description also explains the purpose of expectedDataVersion. This exceeds the baseline of 3.

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 (preview) and enumerates the exact resources it operates on (general goal, calendar-linked start, activity pairing, race result, standalone result, legacy result), making the tool's scope crystal clear. It also distinguishes itself from siblings like commit_goal_result_change by explicitly stating it only previews.

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

Usage Guidelines4/5

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

The description provides a mandatory prerequisite ('Always load get_editable_goals_results first') and an explicit workflow step ('ask for explicit confirmation before commit_goal_result_change'), guiding the agent on proper usage. It could be strengthened by directly contrasting with sibling preview tools, but the guidance is clear and actionable.

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

preview_profile_section_changeAInspect

Create a controlled preview for rules or profile memory. Goals, starts, activities, and results must use preview_goal_result_change so stable IDs and calendar links are preserved. This does not update the athlete profile. Before commit, show the user the exact full text from the preview and ask for explicit confirmation of that exact text.

ParametersJSON Schema
NameRequiredDescriptionDefault
newTextNoLegacy fallback full section text for rules or profile only.
sectionYesProfile memory section to update. Supports rules and profile when enabled by the server. Goals and results use preview_goal_result_change.
structuredNoPreferred input. For rules/profile, send only the matching object.
diffSummaryNoShort internal summary of the factual change. Do not include raw chat transcript.
previousHashYesHash returned by read_profile_sections for the same section. Used to prevent overwriting newer profile data.
Behavior5/5

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

With no annotations provided, the description carries the full burden and does well. It explicitly states the tool does not update the athlete profile, making it clear this is a read-only preview. It also discloses a behavioral requirement—showing the exact text and obtaining explicit confirmation—which goes beyond the schema. No contradictions.

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

Conciseness5/5

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

The description is four sentences, each earning its place: main action, sibling differentiation, non-mutation disclaimer, and user-confirmation requirement. It is front-loaded and free of redundancy or filler.

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

Completeness5/5

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

Given the complexity (nested objects, 5 parameters, no output schema, no annotations), the description provides sufficient context. It implies the return value ('exact full text from the preview'), clarifies the non-committing nature, and complements the schema's parameter details. It is complete for a preview 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?

The input schema already has 100% coverage with detailed descriptions for all 5 parameters, including the section enum and the structured object. The description adds no new parameter-specific semantics beyond what the schema already states (e.g., rules/profile), so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Create a controlled preview for rules or profile memory,' using a specific verb and resource. It explicitly distinguishes from sibling tools by stating that goals, starts, activities, and results must use preview_goal_result_change, clearly scoping the tool's purpose.

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

Usage Guidelines5/5

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

The description provides explicit when-not guidance: 'Goals, starts, activities, and results must use preview_goal_result_change.' It also clarifies the preview is non-mutating ('This does not update the athlete profile') and gives interaction workflow ('Before commit, show the user the exact full text from the preview and ask for explicit confirmation'), which effectively tells the agent how to use it.

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

read_profile_change_detailAInspect

Load the exact full text and hashes for one profile-memory record selected from read_profile_change_history. This is read-only and should be used only for details or before considering a restore.

ParametersJSON Schema
NameRequiredDescriptionDefault
changeIdYesChange id returned by read_profile_change_history.
Behavior4/5

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

The description explicitly declares the tool as 'read-only', which is a key behavioral trait. Since no annotations are provided, this disclosure is critical. It also mentions the content returned (full text and hashes), adding transparency about the output.

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 with no redundancy. The first sentence states the core function, the second adds usage context and read-only note. Every phrase is necessary and front-loaded.

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

Completeness4/5

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

For a simple, single-parameter tool with no output schema, the description provides adequate context: what it does, when to use it, and that it's read-only. It could optionally describe the output format more, but the mention of 'full text and hashes' sets reasonable expectations.

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% and the parameter description in the schema already explains that changeId is returned by read_profile_change_history. The tool description merely reinforces this without adding new semantic details. A 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?

The description uses specific verb 'load' and clearly identifies the resource as 'profile-memory record' with 'full text and hashes'. It distinguishes itself from sibling tools like read_profile_change_history (which lists changes) and restore_profile_change (which restores a change).

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

Usage Guidelines4/5

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

The description explicitly states 'should be used only for details or before considering a restore', providing clear guidance on when to use this tool. It implies not to use it for other purposes, but does not explicitly name alternative tools for listing changes.

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

read_profile_change_historyAInspect

Read a compact paginated index of goals, rules, or profile memory changes. Text bodies and hashes are omitted. Use nextCursor for another page and read_profile_change_detail for one exact record.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoCompact records per page. Default 10, maximum 20.
cursorNonextCursor from the previous history page.
statusNo
sectionNo
Behavior4/5

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

No annotations are provided, so the description carries the burden; it discloses that results are compact, paginated, and that text bodies and hashes are intentionally omitted. It also signals a read-only operation through 'Read', adding meaningful behavioral context beyond the schema. It doesn't mention sort order or filter semantics, but for a non-mutating list it is reasonably transparent.

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 are front-loaded with the primary purpose and immediately give navigation and omission details. No repetition, no filler.

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

Completeness3/5

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

No output schema exists and no annotations, yet the description does not fully describe the response shape beyond saying text/hashes are omitted. It does not mention sort order or status filtering, so an agent may still be uncertain what fields each compact record contains.

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 covers only 50% of parameters (limit, cursor); description compensates partly by mentioning nextCursor and goals/rules/profile as content sections. However, it does not explain the status filter or clarify limit behavior, leaving gaps for the undocumented enum parameters.

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?

Description opens with a specific verb ('Read') and resource ('compact paginated index of goals, rules, or profile memory changes'), clearly identifying the tool's scope. It distinguishes itself from the sibling detail tool by naming read_profile_change_detail for exact records.

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

Usage Guidelines5/5

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

It explicitly instructs using nextCursor for subsequent pages and read_profile_change_detail for a single exact record, which is clear alternative guidance. This tells an agent when this list tool is appropriate versus the detail tool.

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

read_profile_sectionsAInspect

Read controlled rules and profile memory with their hashes. Goals and results are available only through get_editable_goals_results. Use the returned hash as previousHash before previewing a rules/profile change.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavior. The verb 'Read' implies a safe, non-mutating operation, and the description adds context about the returned hashes and their role in subsequent preview operations. It does not detail permissions or other potential side effects, but for a read-only tool this is sufficient.

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

Conciseness5/5

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

The description is two sentences with no fluff. It front-loads the core purpose, then gives a concise, actionable instruction about hash usage. Every sentence earns its place.

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

Completeness5/5

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

For a parameterless read tool, the description is complete: it states what is read, highlights the exclusion of goals/results, and explains how the returned hashes should be used. Combined with sibling tool names, the domain context is clear, and the lack of output schema is acceptable given the simple nature.

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

Parameters4/5

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

The tool has zero parameters, so the 100% schema coverage trivially covers all inputs. The baseline for 0 params is 4, and the description adds valuable context about the output (hashes and their usage) without needing to explain any parameters.

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

Purpose5/5

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

The description clearly states the tool reads controlled rules and profile memory with hashes, using a specific verb and resource. It also distinguishes itself from get_editable_goals_results by explicitly noting that goals/results are only available there, which prevents confusion among sibling tools.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: to read rules/profile memory, and explicitly says goals/results are not available here but via get_editable_goals_results. It also instructs to use the returned hash as previousHash before previewing changes, giving a clear workflow context.

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

restore_profile_changeAInspect

Restore a committed profile, goals, or rules profile memory change back to its previous text. First load the exact record with read_profile_change_detail. For goals, restoring old-format labels is blocked; rebuild a canonical goals preview instead. Call this only after the user explicitly confirms the exact full text that will be restored.

ParametersJSON Schema
NameRequiredDescriptionDefault
changeIdYesCommitted change id to restore. Call only after the user explicitly confirms the exact full text that will be restored. Restore only succeeds when the current section still matches that change.
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the conditional success ('Restore only succeeds when the current section still matches that change'), the goal label restriction, and the need for explicit confirmation. It stops short of explaining whether a restore creates a new history entry or is irreversible, but the core behavior is adequately transparent.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the primary purpose, then preconditions and a special-case exception. Every sentence adds necessary information without redundancy or filler.

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

Completeness4/5

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

For a one-parameter restore operation, the description covers the action, required sequence (read detail first), user-confirmation requirement, and an exception. It lacks explicit mention of return values or post-restore state, but the effect is clear and the schema handles the parameter. Minor gap in side-effect description prevents a 5.

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

Parameters4/5

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

The schema fully documents the single parameter changeId, including its preconditions. The description adds value by telling the user to obtain the exact record via read_profile_change_detail, which indicates where to get the ID. This exceeds the schema baseline, so a 4 is warranted.

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

Purpose5/5

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

The description clearly states the verb 'Restore' and the resource: 'a committed profile, goals, or rules profile memory change back to its previous text'. This precisely distinguishes it from siblings like preview_profile_section_change and commit_profile_section_change, which handle previews and commits, not restores.

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?

Provides explicit preconditions: 'First load the exact record with read_profile_change_detail' and 'Call this only after the user explicitly confirms the exact full text'. Also gives an alternative for a blocked case: 'For goals, restoring old-format labels is blocked; rebuild a canonical goals preview instead.' This clearly signals when and how to use the tool.

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

save_strategyAInspect

Save the athlete's direction-only STAS strategy only after explicit user confirmation. It is not a calendar, weekly plan, block contract, or full coaching analysis. Target length is about 2500-4000 characters; hard maximum is 5000 characters. Required markdown sections: Goal chain, Current point, Weekly decision contract, Roadmap, Resources / risks, Review triggers / unknowns. Build from current goals, rules, profile, lastMetrics, wellness, training history, evidence, reports, and calendar first; treat previous strategy as contamination risk and recover only independently supported durable decisions. Use at least 8 weeks of weekly/load history when available and 12-26 weeks for season direction, combined with exact bounded-list windows and selected detailed workout passports instead of only 2-4 weeks. Treat every dated goal as a real input and infer priority only when explicit. Store only explicit priority/tradeoffs not recoverable from goals, broad phase direction, deliberate deferrals, durable direction-changing constraints/risks, and causal review triggers. Weekly decision contract must state durable boundaries and delegate current capacity, stimuli, format, dose, load, support work, cuts, and taper to the private Planning Gate using fresh data. Do not store session frequency, easy/hard balance, weekly load targets, number of key workouts, default weekly stimulus, support-work dose, exact progression, workout formats/protocols, taper depth, ready 2-4 week sequences, current Fitness/Fatigue/Form/TL, loaded windows, or live calendar state. Roadmap phases are broad direction, explicit priority/tradeoff when needed, deliberate deferral, and review points—not Driver/Support/Switch-gate block contracts. Use for durable direction changes, not one-off weekly edits. Before calling this tool, show the exact full markdown and ask for explicit confirmation. Never show one version and save another.

ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_mdYesCompact direction-only STAS strategy markdown, not a calendar, weekly plan, block contract, or full coaching analysis. Target length is about 2500-4000 characters; hard maximum is 5000 characters. Required sections: Goal chain, Current point, Weekly decision contract, Roadmap, Resources / risks, Review triggers / unknowns. Build from current goals, rules, profile, lastMetrics, wellness, reports, training history, evidence, and calendar first; do not copy or paraphrase previous_strategy unless current facts independently support the same durable decision. For strategy-level work, use at least 8 weeks of weekly/load history when available and 12-26 weeks for season direction; combine it with exact bounded-list windows and selected detailed workout passports instead of using only 2-4 weeks. Treat every dated goal as a real planning input by default; do not infer a single main goal from distance, later date, target result, profile order, or old strategy wording. Use priority only when it is explicit in the current profile, goal comment, athlete message, or current coaching decision. B/C/training-race/no-full-taper wording changes peak depth and risk; it does not mean the race should be ignored unless the athlete explicitly says the result does not matter. Store only explicit priority/tradeoffs not recoverable from goals, broad phase direction, deliberate deferrals, durable direction-changing risks/constraints, and causal review triggers. Weekly decision contract must state durable boundaries and delegate current capacity, stimuli, format, dose, load, support work, cuts, and taper to the private Planning Gate using fresh data. Do not store session frequency, easy/hard balance, weekly load targets, number of key workouts, default weekly stimulus, support-work dose, exact progression, workout formats/protocols, taper depth, ready 2-4 week sequences, or current Fitness/Fatigue/Form/TL. Roadmap phases are broad direction, priority/tradeoff, deliberate deferral, and review points—not Driver/Support/Switch-gate block contracts. Before save_strategy, show the user the exact full markdown and save only after explicit confirmation. Never show one version and save another.
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it excels. It discloses the explicit confirmation requirement, the contamination-risk treatment of previous strategy, the exact types of information to store vs. exclude (e.g., 'Do not store session frequency...'), and the delegation to the private Planning Gate. These are non-obvious behavioral traits well beyond what the schema states.

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

Conciseness2/5

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

The description is excessively long and largely duplicates the input schema's parameter description. While the first sentence is front-loaded, the remainder becomes repetitive and bloated, with many sentences that restate schema constraints verbatim. This violates the 'every sentence should earn its place' principle.

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?

The description covers the tool's purpose, content constraints, behavioral prerequisites, and usage guidelines comprehensively. It lacks only explicit mention of the return value or error behavior, but for a save operation this is a minor omission. Overall it is complete enough for the tool's complexity.

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% for the single parameter strategy_md, with the schema already providing a detailed description of content, sections, length, and exclusions. The tool-level description repeats this content almost verbatim without adding new parameter-specific meaning. Thus it meets the baseline 3 but does not exceed it.

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 opening sentence 'Save the athlete's direction-only STAS strategy only after explicit user confirmation' uses a specific verb and resource, and the subsequent 'It is not a calendar, weekly plan, block contract, or full coaching analysis' explicitly distinguishes it from sibling tools like create_plan_event or create_note_event. This makes the tool's unique purpose unmistakable.

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

Usage Guidelines5/5

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

The description states 'Use for durable direction changes, not one-off weekly edits' and explicitly calls out what the tool is not (calendar, weekly plan, block contract, full coaching analysis). It also mandates 'Before calling this tool, show the exact full markdown and ask for explicit confirmation' and warns 'Never show one version and save another', giving clear when-to-use and usage rules.

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

whoamiAInspect

Check which STAS user is currently authenticated. Use only for diagnostics or reconnect troubleshooting.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It indicates a read-only check of authenticated state but does not mention potential error conditions, response format, or whether any side effects exist. For a simple whoami tool, this is adequate but not rich.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the action ('Check which STAS user...') and followed by usage guidance. Every word earns its place with no redundancy.

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?

Given the tool's trivial complexity, empty schema, and no output schema, the description covers the essential purpose and usage context. It does not describe the return value, but for a whoami operation this is a minor omission, leaving it just short of fully complete.

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

Parameters4/5

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

The tool has zero parameters, and the schema already reflects this with 100% coverage. The description adds no parameter details because none exist, which is appropriate. The baseline of 4 applies.

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

Purpose5/5

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

The description clearly states the verb 'Check' and the resource 'which STAS user is currently authenticated.' This is a specific, unambiguous action that is distinct from all sibling tools, which focus on goals, profile sections, notes, plans, and activity details.

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

Usage Guidelines4/5

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

The description provides explicit context for when to use the tool: 'Use only for diagnostics or reconnect troubleshooting.' It does not, however, mention when not to use it or suggest alternative tools, so it falls slightly 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.

Discussions

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

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources