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.4/5 across 20 of 20 tools scored. Lowest: 3.8/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource and action: plan events vs note events, goals/results vs profile sections, preview vs commit, history vs current sections. The boundaries are clearly defined in descriptions, so an agent can reliably select the right tool for a given task.

Naming Consistency5/5

All tool names follow a predictable verb_noun snake_case pattern with consistent verbs (create, delete, get, preview, commit, read, restore, save). The use of 'get' for data retrieval and 'read' for profile-specific history/sections is internally consistent.

Tool Count4/5

At 20 tools, the set is slightly above the typical 3-15 range, but the complexity of the coaching domain justifies the count. The preview/commit pairs and distinct resource types (goals, profile, plan, notes) each earn their place, though the set could be streamlined by merging some read tools.

Completeness4/5

The tool surface covers the main coaching workflows: reading athlete state, managing training plan and notes, editing goals/results, maintaining profile memory, and saving strategy. Minor gaps exist around explicit creation/deletion of goals and profile sections, which are not clearly supported outside the preview/commit flow.

Available Tools

21 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, the description carries the transparency burden. It discloses that the server rejects stale data and that the operation returns the new authoritative editing state. While it does not detail side effects or reversibility, it covers key behavioral aspects beyond what the schema provides.

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, then a usage caution, then server behavior. Every sentence earns its place with no redundancy or wasted words.

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 one-parameter commit tool with no output schema, the description explains the purpose, preconditions, and response nature. It could specify the response fields in more detail, but it is sufficient for an agent to invoke correctly in the context of the preview workflow.

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 provides 100% coverage for the single parameter changeId, including a description that already states it is a preview ID and must be committed only after user confirmation. The main description adds little beyond restating this, 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 uses the specific verb 'Commit' and clearly identifies the resource as a previewed goal, start, activity-link, or result change. It distinguishes this tool from its sibling preview_goal_result_change and commit_profile_section_change by specifying both the action and the target.

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

Usage Guidelines5/5

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

The description explicitly says 'Call only after the user explicitly confirms the exact preview from preview_goal_result_change', providing a clear precondition. It also mentions that 'The server rejects stale data', which informs the agent about the need for fresh preview IDs and when not 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.

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?

Even though no annotations are provided, the description discloses important behavioral details: it updates the profile only if the section hash matches the preview, implying a permanent write with a conditional guard. It could go further by explicitly stating that the commit is irreversible, but 'commit' itself implies finalization, and the user-confirmation requirement adds safety 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 is three sentences long, placed in descending order of importance: purpose first, then conditions, then mechanism. Every sentence earns its place with no redundant text. It is concise and well-structured.

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 low complexity (single parameter, no output schema), the description fully covers the necessary context: when to call, when not to call, the security condition, and the parameter's source. It is self-contained and leaves no critical gaps for an agent to misuse the 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 provides a rich description for changeId (returned by preview_profile_section_change, requires user confirmation). The tool-level description reiterates this but adds no new parameter-specific semantics. Since schema coverage is 100%, the baseline of 3 is appropriate; the description doesn't degrade it but also doesn't add extra meaning.

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

Purpose5/5

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

The description clearly states the tool's function: 'Commit a previously previewed rules or profile memory change.' This specifies a precise verb ('commit') and resource ('profile section change'), and it distinguishes itself from sibling tools like preview_profile_section_change and restore_profile_change by focusing on the finalization step.

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 usage conditions: '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.' It also notes the hash-check condition, effectively telling when the operation will succeed or fail. This is strong when-to-use guidance without needing to mention alternatives.

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?

With no annotations provided, the description fully carries the behavioral burden. It discloses dry_run write-vs-preview semantics, idempotent external_id usage, required field omissions, all-day date conventions, and the prohibition against seven-day date ranges for weekly notes.

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 purposeful, opening with the core action and then adding only operationally relevant details. Every sentence provides actionable guidance, with no filler or repetition of obvious schema information.

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

Completeness5/5

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

Despite no output schema and no annotations, the description is complete enough for correct invocation. It covers preview mode, idempotent updates, ordinary vs weekly notes, date anchoring, and required exclusions, making the tool fully usable from the description alone.

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?

Top-level schema coverage is only 50% because events lacks a property-level description, but the description compensates richly. It explains dry_run behavior, external_id format, all-day date conventions, for_week semantics, and specifically warns to omit type, moving_time, icu_training_load, and workout_doc—details not present 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?

The first sentence clearly states the tool's function: 'Create or update NOTE events in Intervals.' This specific verb+resource combination distinguishes it from sibling tools like create_plan_event and delete_note_events by focusing exclusively on NOTE 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 description provides clear usage context by requiring category=NOTE and distinguishing ordinary notes from weekly review notes via for_week. However, it does not explicitly name alternative tools such as create_plan_event or delete_note_events, so it falls slightly short of fully explicit when-not-to-use 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?

With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains side effects: dry_run semantics, server-side mapping of activity_type, inference of target, local datetime requirements, validation failure handling via error.data.issues, and the need to read back events to verify structured steps. It also reveals caveats about icu_training_load and null fitness values.

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

Conciseness3/5

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

The description is extremely long and dense, reading more like a manual than a tool description. It is front-loaded with the core purpose, but the extensive prose and embedded JSON example make it difficult to scan. While every sentence carries useful information, the lack of structure and repetition of the example in the schema reduce its 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?

For a complex mutation tool with no output schema and no annotations, this description is exceptionally complete. It covers prerequisites, parameter constraints, failure recovery via error paths, and post-write verification steps. It leaves virtually no operational ambiguity for the agent.

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 schema coverage is 100%, the description adds substantial meaning beyond the schema: exact external_id format, workout_builder syntax rules (no '-' on repeat headers, flush-left step lines), explicit prohibition of low-level fields, and clarification of dry_run behavior. It also explains how activity_type maps to server fields and how workout_builder is treated, which is not obvious from the schema alone.

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

Purpose5/5

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

The opening sentence 'Create or update planned WORKOUT events in Intervals' clearly states a specific verb and resource, and the emphasis on workouts distinguishes it from sibling tools like create_note_event and get_planned_events. It also explains that existing events are updated by keeping the same external_id, reinforcing its dual create/update 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 gives explicit usage instructions: use it for planned workout events, update by preserving external_id, avoid deleting the day/window for simple edits, and leverage dry_run for previews. It also specifies when workout_builder is mandatory versus optional, and warns against sending low-level Intervals fields, providing clear when-to-use and when-not-to-use guidance.

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.
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 discloses the dry_run behavior ('false deletes, true previews only'), the destructive nature of deletion, and the compatibility alias. It also warns against unsafe deletions without proper IDs. This is strong context, though it doesn't mention irreversibility or error behavior, keeping it at a 4.

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, front-loaded with the primary action. Every sentence provides necessary context: the target, ID formats, window deletion conditions, safety warning, and dry_run semantics. No wasted words.

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 (5 parameters, no output schema, no annotations), the description covers the key operational aspects: how to delete specific notes, how to do window replacement, the dry_run requirement, and a critical safety warning. It does not detail return values or error scenarios, but those are not required and the essentials are all present.

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%, giving a baseline of 3. The description adds meaningful usage semantics: that external_ids should be used for one specific note, external_id is a compatibility alias, and oldest/newest are for full-window replacement only. This clarifies how parameters interact, adding value beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description opens with 'Delete STAS note events,' which is a specific verb+resource statement. It clearly distinguishes from the sibling tool 'delete_plan_events' by focusing on note events, and further clarifies the exact ID format with 'note: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 Guidelines4/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 specific IDs versus window deletion ('Use oldest/newest window deletion only when replacing a whole note set in that date window'), and warns against deleting user-created notes without a note: external_id. However, it does not explicitly name alternative tools, so it stops short of a perfect 5.

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

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, the description carries the burden of behavioral disclosure. It clearly explains dry_run semantics ('false deletes, true previews only'), the compatibility alias, and window deletion scope. While it doesn't detail irreversibility or response behavior, the provided context is strong for a delete operation.

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, front-loaded with a clear purpose, and each subsequent sentence adds distinct, necessary guidance. No redundant or vague wording.

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 no output schema and a moderately complex tool, the description covers purpose, parameter selection, and dry_run behavior comprehensively. It omits details about return values or error handling, but for a delete tool with preview, this is nearly 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?

Schema descriptions cover 100% of parameters, but the description adds meaningful use-case semantics: external_id as a compatibility alias, external_ids for exact event IDs, and oldest/newest for full-window replacement. This goes beyond the schema's structural 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 'Delete STAS plan events,' naming a specific verb and resource. It clearly distinguishes this tool from sibling tools like delete_note_events and create_plan_event by focusing on STAS plan events and their unique id formats.

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 when-to-use guidance: window deletion is only for replacing the whole STAS plan, and simple edits should use create_plan_event with the same external_id. Also differentiates external_id vs external_ids with clear use cases.

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.
Behavior5/5

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

With no annotations, the description discloses read-only behavior, compactness, and explicitly lists omitted data (source payloads, route coordinates, latlng, raw stream arrays). This goes beyond basic mutation status and helps set expectations for response content.

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-load the purpose and usage, then add limitations. No fluff, every clause adds value.

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 one parameter and no output schema, the description provides sufficient detail: it names the data categories included and excluded. It also covers the required prerequisite flow. No further explanation seems necessary.

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 description already covers training_id's origin and requirement, achieving 100% coverage. The description reinforces the prerequisite but adds no new parameter-specific meaning, so a baseline 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 'Load a compact read-only passport for one completed workout,' specifying the verb, resource, and scope. It distinguishes itself from siblings by focusing on detailed single-workout data and references get_trainings for ID identification.

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 instructs to first identify training_id with get_trainings, then lists detailed use cases (intervals, laps, splits, terrain, weather, efforts, segments, data quality). This provides clear when-to-use guidance and names the prerequisite tool.

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

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 explicitly states 'This tool does not change anything,' covering the non-mutating aspect. It also mentions the requirement of stable IDs and dataVersion for later previews, which is a useful behavioral dependency. However, it does not detail what the return payload contains, leaving some ambiguity about how the state is structured.

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, tightly packed with relevant information. It starts with the primary action and resource, then adds key dependencies and a read-only guarantee. There is no filler or repetition, making it appropriately concise and well-structured.

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, no output schema, and no annotations, the description provides the sole context. It lists all the resource categories it reads and notes its non-mutating nature, which is essential for safe invocation. However, the phrase 'bounded editing state' is slightly ambiguous, and the description could have been clearer about what 'complete' includes, but overall it offers sufficient context for a read-only getter.

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 description need not explain parameter semantics. Per the rubric, a baseline score of 4 applies. The description adds no param-related information because there are no params to document.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Read') and a well-specified resource ('complete bounded editing state for general goals, calendar-linked starts, race results, standalone results, and legacy results'). This distinguishes it from sibling tools like get_activity_detail and read_profile_sections, which target other data. It also explicitly notes the tool is non-mutating, reinforcing its purpose.

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 by stating that 'Stable public IDs and dataVersion are required for every later preview,' implying this tool should be used to obtain the editing state before previewing changes. It does not explicitly name alternatives or exclusions, but the read-only nature and prerequisite hint offer sufficient guidance for an agent.

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, the description explicitly states 'This tool does not change the start, activity, or result,' providing a clear safety guarantee. It also labels the operation as 'read safe nearby activity candidates,' giving insight into its side-effect-free nature. However, it does not disclose other potential behaviors like return value format or error conditions.

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 the main action, and includes a downstream usage hint plus a safety guarantee. No filler words.

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 read tool with no output schema, the description covers the core purpose, downstream usage, and safety. It lacks explicit alternative guidance and return structure details, but the simplicity makes it reasonably complete.

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 describes goalPublicId fully (UUID, returned by get_editable_goals_results), so coverage is 100%. The description adds minimal parameter-specific meaning, just tying the returned selectionId to previewing. Per rubric, baseline 3 is appropriate.

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 it reads safe nearby activity candidates for one exact start, with a specific verb and resource. It does not explicitly distinguish from sibling tools like get_activity_detail, but the naming and context are specific enough to infer 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 Guidelines3/5

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

It provides a downstream usage instruction (use the returned selectionId when previewing result_link_activity) but does not explicitly state when to use this tool over alternatives or when not to use it. Usage context is implied rather than explicit.

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
Behavior3/5

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

With no annotations, the description carries the burden. It states the operation is read-only ('Read'), which is a key behavioral trait. However, it does not disclose return format, pagination, or potential errors, leaving some ambiguity about what the agent will receive.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the core purpose. Every word earns its place, and the usage hint is woven in without redundancy.

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?

For a simple two-parameter read tool, the description provides sufficient context for when to use it, but lacks details about the output shape or any edge-case behavior. Since there is no output schema and no annotations, the description could be more complete about what the agent will get back.

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%, and the description does not explain the 'oldest' and 'newest' parameters, only mentioning a 'date window.' The agent must infer that these parameters define the window boundaries, but the description adds no explicit semantic detail beyond the schema's format patterns.

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 planned events from the Intervals calendar within a date window. It uses a specific verb ('Read') and identifies the resource and scope, distinguishing it from sibling tools that create or 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 description provides an explicit usage context: 'Use this before rewriting or replacing an existing STAS plan.' This tells the agent when to invoke the tool, though it does not explicitly mention when not to use it or name alternative tools.

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 chronological list of completed workouts plus historical calendar context (NOTE, SICK, INJURED, HOLIDAY). Context is not a workout and does not consume the training limit. Default mode is a rich index for chronology, load, reports, compact summaries, and choosing training_id; use offset to continue beyond the first 50 completed workouts. Set full=true only for analysis-rich comparison across multiple workouts; it adds a bounded compact interval projection. For one selected completed workout, use get_activity_detail for splits and richer detail; kilometre splits are intentionally omitted from get_trainings in every mode. If listDetail.userReportTruncated=true for a workout, its report was shortened only to keep the whole list within the response budget; call get_activity_detail with that training_id for the complete report.

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.
offsetNoPagination offset for completed trainings. Use the next offset to continue the same bounded date window; calendar context is returned only on the first page.
oldestNoStart boundary date in YYYY-MM-DD, inclusive.
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. It discloses size-safety, pagination behavior, that calendar context does not consume the training limit, full-mode semantics, intentional omission of kilometre splits, and report truncation behavior.

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 dense but not bloated. Every sentence adds information, with a logical flow from main purpose to modes to alternatives. Slightly long but justified given the tool's complexity.

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 no output schema and no annotations, the description covers return characteristics (list, calendar context, compact summaries, truncation), pagination, and alternative tools. It is complete for the tool's complexity and the surrounding tool set.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds context beyond the schema by explaining when to use full=true, how offset works with date windows, and that calendar context is only on the first page. This 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 clearly states it loads a bounded, chronological list of completed workouts plus calendar context. It also distinguishes from get_activity_detail by noting that tool is for one workout's splits and richer detail.

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 explains default mode for indexing, when to use full=true, how to paginate with offset, and when to switch to get_activity_detail. It also covers the truncation flag and tells the agent to call get_activity_detail for the complete report.

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

get_user_summaryAInspect

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. weeklyHistory.recentKeySessionEvidence is the compact 42-day factual register for current planning. It includes all qualifying key sessions unless truncated=true; each row uses columns for date, saved name/type, sourceTrainingId, confirmed actual WORK, confirmed REST only when recorded, and wholeActivity only when no confirmed interval structure exists. It never invents recovery or interval rows; null recovery means no confirmed REST inside that activity. For older comparisons, use get_trainings with a bounded date range, then get_activity_detail for one exact workout. confirmedStructuredIntervals remains a separate verified structured-session index for its stated period; do not infer unshown measurements.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNo
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it includes all qualifying key sessions unless truncated, never invents recovery or interval rows, explains null recovery semantics, and clarifies that confirmedStructuredIntervals is a separate verified index. This is rich, non-obvious data behavior.

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 dense but every sentence adds value, covering content, caveats, and alternatives. It front-loads the primary use case effectively. A more structured layout could improve scannability, but there is no wasted wording.

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 minimal schema (single optional parameter) and no output schema, the description is exceptionally complete: it defines the data included, temporal bounds, absence semantics, and relationship to complementary tools. It leaves few questions unanswered.

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 input schema has one parameter 'section' with enum values, but the description never mentions it or explains how it filters the response. Schema description coverage is 0%, and the description does not compensate at all, leaving the agent to guess which section to request.

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 an athlete's profile, goals, rules, recent load, fitness context, and more. It explicitly says 'Start here for most conversations,' which distinguishes it from sibling tools and sets the expectation of a comprehensive summary.

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

Usage Guidelines5/5

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

The description explicitly says to use this tool for most conversations and provides clear alternatives for older comparisons: 'use get_trainings with a bounded date range, then get_activity_detail for one exact workout.' It also explains when not to infer unshown measurements, giving direct usage boundaries.

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

get_wellnessAInspect

Read all locally stored Intervals.icu wellness values for any requested date window; there is no fixed day cap and this read makes no live provider request. The response is column-oriented: dates[i] is the date for every series[field][i] and customSeries[field][i]. null means not recorded, never zero. Only fields with at least one value are returned. window=[oldest inclusive,newest exclusive]; missingRanges uses the same boundaries and names dates for which STAS has no stored wellness row. complete=true means the response is not truncated and includes all meaningful locally stored standard and custom wellness fields; it does not claim the watch/provider supplied every metric. source=intervals_icu_cached_by_stas means values may originate from a watch, another connected source, or manual Intervals.icu entry and are served from STAS cache. Interpret trends against this athlete's own baseline and together with workouts and reports; do not judge readiness or diagnose from one value. CTL is modeled longer-term training load, ATL shorter-term load, and CTL-ATL can be used as Form; higher or lower is not inherently good or bad. HRV is protocol/device dependent and is mainly useful relative to the athlete's own trend. Resting HR is also individual; acute deviation matters more than a universal threshold. sleepSecs is seconds. sleepQuality is 1=Excellent through 4=Poor. soreness/fatigue/stress are 0=None through 4=Extreme, higher is worse. mood/motivation are 1=Excellent through 4=Poor, higher is worse. providerUpdatedAt is the provider record update time, not the measurement time. Preserve custom field names exactly; if a custom field's unit or scale is unclear, do not invent it—describe only its observed trend or ask the user. If the complete response is too large, retry every exact non-overlapping window in suggestedWindows; if none are suggested, explain that one stored day itself cannot be split further by date. Never treat a partial window as the whole request.

ParametersJSON Schema
NameRequiredDescriptionDefault
newestYesEnd boundary date in YYYY-MM-DD, exclusive. There is no fixed day limit. If the complete result is too large, retry the exact non-overlapping suggested windows returned by the tool.
oldestYesStart boundary date in YYYY-MM-DD, inclusive. There is no fixed day limit.
Behavior5/5

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

No annotations are provided, so the description carries full responsibility. It discloses boundary semantics, null versus zero, field filtering, column orientation, the meaning of complete=true, source origins, custom field handling, and units/scales, making behavioral expectations remarkably transparent.

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 long, but each sentence carries substantive information about behavior, units, interpretations, or pagination. It is front-loaded with the core read behavior, and the remaining content is necessary because there is no output schema or 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?

Given that annotations and output schema are absent, the description covers every important context: what the response looks like, what complete=true and missingRanges mean, field scales, custom field handling, provider timestamps, and handling large responses. It is fully complete for safe and correct use.

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 already covers inclusive/exclusive date semantics and the date format. The description adds further meaningful context by explicitly defining window boundaries, missingRanges, null values, and retry behavior, going beyond simple schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Read all locally stored Intervals.icu wellness values' and immediately scopes it to any date window. It also distinguishes this from other read tools by emphasizing local cache and no live provider request.

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 clearly states when to use it: to read locally stored wellness values with no fixed day cap and no live provider call. It gives contextual guidance about retrying suggested windows and never treating a partial window as the whole request, though it does not explicitly enumerate alternative sibling tools for comparison.

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 provided, the description carries the full burden of behavioral disclosure. It explicitly states 'This never saves' and describes expected preview output including calendar/activity effects. It also implies a staleness constraint by requiring the exact dataVersion. While it doesn't detail error handling or validation behavior, the key safety trait (read-only preview) is clearly disclosed.

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, each earning its place: scope, prerequisite, and required action. No filler or repetition of schema details. The description is front-loaded with the core purpose and immediately provides actionable workflow steps.

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 the tool's complexity (15 command variants and no output schema), the description provides everything an agent needs: what it does, what to load first, what to send, what to show the user, and what to do next. The note about calendar/activity effects is exactly the kind of context the schema cannot convey. The description is complete for the tool's role in the workflow.

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

Parameters4/5

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

The schema already provides comprehensive descriptions for the command variants and expectedDataVersion (100% coverage). The tool description adds practical guidance about using the dataVersion returned by get_editable_goals_results and reinforces that only one exact change is allowed. This complements the schema without being redundant, though the schema already carries most parameter meaning.

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 resource ('goal result change') and lists the exact entity types covered (general goal, calendar-linked start, activity pairing, race result, standalone result, legacy result). It clearly differentiates from sibling commit and get tools by emphasizing that this is a no-save preview step. The scope is 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 gives explicit workflow instructions: always load get_editable_goals_results first, send its exact dataVersion, and show preview to the user before calling commit_goal_result_change. It names the precise prerequisite and downstream tool, leaving no ambiguity about when and how to use this tool.

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.
Behavior4/5

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

There are no annotations, so the description carries the burden. It states clearly 'This does not update the athlete profile,' disclosing the non-mutating nature. It also explains the preview and confirmation requirement, which is important behavioral context. However, it doesn't address auth, errors, or the exact return 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?

Three sentences, each serving a distinct purpose: purpose, sibling routing, and workflow. No redundancy or filler. The description is well-structured 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?

The description is strong given the complex schema; it covers the core workflow (preview, confirm, don't update) and the routing to the sibling tool. However, without an output schema, it doesn't describe the exact return value (e.g., preview ID or text) beyond implying the full text is present. Still, the explanation is sufficient for an agent to know the preview's role in the commit flow.

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% description coverage for all parameters, so the baseline is 3. The description adds minimal parameter-specific meaning; it only clarifies the section scope ('rules or profile') and directs other sections elsewhere, which the schema enum already provides. The rich field-level descriptions in the schema do the heavy lifting.

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,' giving a specific verb and resource. It explicitly distinguishes from sibling preview_goal_result_change by stating that goals, starts, activities, and results must use that tool, leaving no ambiguity about scope.

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 routing guidance: 'Goals, starts, activities, and results must use preview_goal_result_change' and clarifies that this tool is for rules or profile. It also provides the workflow step 'Before commit, show the user the exact full text...' indicating when to use and what to do.

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?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'This is read-only', which is crucial for an agent to know there are no side effects. It also specifies what is returned ('exact full text and hashes'). It does not mention auth or error conditions, but for a simple read-only detail endpoint this is adequate.

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, each contributing essential value: the first defines the action and output, the second gives usage constraints and confirms read-only behavior. No unnecessary words or repetition of schema details, making it tightly structured.

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 tool with no output schema, the description tells the agent what the tool returns, where to get the parameter, and when it should be used. It lacks details on error behavior or authorization, but given the tool's simplicity and the presence of sibling context, it is nearly complete. A small gap is that it doesn't mention pagination or formatting, but that's minor.

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 already provides 100% coverage with 'Change id returned by read_profile_change_history' for the only parameter. The description adds a cross-reference to the history tool, reinforcing the parameter's source, but does not add new semantic details beyond the schema's own description. 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 opens with 'Load the exact full text and hashes for one profile-memory record', which is a specific verb, resource, and output scope. It clearly distinguishes from sibling tools like read_profile_change_history (which lists records) and restore_profile_change (which mutates), 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 Guidelines4/5

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

The description states when to use this tool: 'only for details or before considering a restore', and it implies the prerequisite to first use read_profile_change_history to obtain the changeId. However, it does not explicitly name alternatives or exclusions, but the context is sufficiently clear for this narrow use case.

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?

With no annotations, the description carries the burden. It discloses that the response is compact, omits text bodies and hashes, and requires nextCursor for pagination. This gives the agent a clear model of the tool's behavior. It doesn't mention authorization or rate limits, but for a read-only listing tool, the disclosed traits are 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?

Three sentences, no filler, with the main purpose front-loaded. Every sentence earns its place: what it does, what's omitted, how to paginate, and where to get details.

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 description explains the core behavior (compact index, omitted bodies/hashes, pagination, detail tool) but does not mention that results can be filtered by status or section, despite those parameters being in the schema. With no output schema or annotations, the agent might miss filtering capabilities. Overall adequate but with clear gaps.

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 50%; limit and cursor have schema descriptions. The tool description adds meaning for 'cursor' (nextCursor) and 'section' (goals, rules, profile) but does not explain 'status' beyond its enum values. With moderate coverage, the description partially compensates but leaves status semantics ambiguous.

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 starts with 'Read a compact paginated index of goals, rules, or profile memory changes,' clearly stating the verb and resource. It distinguishes from sibling tools by explicitly directing to 'read_profile_change_detail' for exact records, and the scope (goals/rules/profile) aligns with the sibling set.

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 usage guidance for pagination ('Use nextCursor for another page') and an alternative ('read_profile_change_detail for one exact record'). It does not mention when not to use preview/commit/restore tools, but these are clearly different operations; the main alternative is covered.

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?

No annotations are provided, so the description must carry the behavioral burden. It discloses that goals/results are excluded, the read returns hashes, and the hashes feed the preview workflow. This adds useful non-obvious context, though it could more explicitly state permission requirements or the read-only safety profile.

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 with no wasted words. The first sentence states the purpose and return value; the second gives a crucial usage rule. Information is front-loaded and scannable.

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 having no output schema and no parameters, the description covers what is returned (hashes), what is not included (goals/results), and how to use the result in the preview workflow. This is a complete picture for a simple read tool.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds context about what data is read, which is sufficient since there are no parameters to clarify.

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 the specific verb 'Read' and identifies the exact resources: 'controlled rules and profile memory' plus what is returned (hashes). It explicitly says goals/results are not available here, distinguishing it from sibling tools like get_editable_goals_results.

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 names get_editable_goals_results as the alternative for goals/results, and gives a concrete workflow instruction: use the returned hash as previousHash before previewing a rules/profile change. This clearly communicates when and how to use the tool relative to preview/commit siblings.

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 offers meaningful context: it requires the user to confirm exact full text, blocks restoring old-format goals labels, and implies a mutation by 'restore back'. It could add more about side effects or return behavior, but the prerequisites and restrictions are well disclosed.

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 that are front-loaded with the core purpose, followed by procedural guidance and a safety requirement. Every sentence earns its place with no redundancy or fluff.

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 tool with no output schema, the description plausibly covers the workflow (load record first), the restriction (goals old-format blocked), and the confirmation requirement. It does not describe return values or detailed failure modes, but the schema provides the key precondition, making this reasonably complete.

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 changeId parameter, so the baseline is 3. The description repeats the confirmation requirement already present in the schema and adds no new semantic detail about the parameter itself.

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 restores a committed profile, goals, or rules profile memory change to its previous text, using a specific verb and resource. It also distinguishes itself from siblings like commit_* and preview_* by focusing on the restore action.

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

Usage Guidelines5/5

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

The description explicitly instructs to first load the exact record with read_profile_change_detail, states when to call (after explicit user confirmation), and provides a when-not-to-use case for old-format goals labels, directing to rebuild a canonical goals preview instead. This gives clear context and alternatives.

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 preparation map only after explicit user confirmation. The map is the reusable result of long-horizon planning, not a calendar, weekly plan, workout prescription, or full coaching analysis. Target length is about 1800-4000 characters; hard maximum is 5000 characters. Required sections: Goal direction, Current phase, Preparation map, Durable boundaries, Review triggers / unknowns. Build from current goals, rules, profile, lastMetrics, wellness, training history, evidence, reports, and calendar first; treat previous strategy as historical context and contamination risk. 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. Treat every dated goal as a real input and infer priority only when explicit. Store the agreed goal relationships, current phase purpose, a broad 3-6 phase route, what each phase develops/preserves/defers, transition conditions, durable boundaries, and causal review triggers. A phase may name its target capacity. Every Durable boundaries line must preserve a route-specific decision and must not repeat universal coaching, measurement, device, load-cost, or athlete rules. Local pain, sleep, recovery, illness, or execution signals change the near-term plan first and become map review triggers only when persistence would change phase feasibility, timing, sequence, or the goal route. Treat phase dates as approximate anchors and Transition when as review evidence, not hard gates; if unmet, consider adaptation, delayed or compressed transition, and remaining runway. Do not store session frequency, easy/hard balance, weekly load targets, number of key workouts, default weekly stimuli, exact progression, workout formats/protocols, fixed taper depth, ready 2-4 week sequences, current Fitness/Fatigue/Form/TL, loaded windows, or live calendar state. Old detailed strategies remain historical context: do not proactively ask the athlete to convert one merely because an internal audit calls it legacy. Create or update the map only when the athlete asks for strategy/season work or explicitly agrees to a long-term route change. 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 STAS preparation map: a saved result of long-horizon planning, not a calendar, weekly plan, workout prescription, or full coaching analysis. Target length is about 1800-4000 characters; hard maximum is 5000 characters. Required sections: Goal direction, Current phase, Preparation map, Durable boundaries, 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 the agreed goal relationships, current phase purpose, a 3-6 phase seasonal route, what each phase develops/preserves/defers, broad transition conditions, durable boundaries, and causal review triggers. A phase may name the capacity it develops, but it must not prescribe exact weekly stimuli, workout formats, dose, load, support work, cuts, or taper. Do not store session frequency, easy/hard balance, weekly load targets, number of key workouts, default weekly stimulus, exact progression, workout protocols, fixed taper depth, ready 2-4 week sequences, or current Fitness/Fatigue/Form/TL. Every Durable boundaries line must preserve a route-specific decision that would be lost after reloading goals, athlete rules, and canonical planning rules; delete universal coaching, measurement, device, or load-cost rules from the map. Local pain, sleep, recovery, illness, or execution signals change the near-term plan first. Store them as map review triggers only when persistence or consequence would change phase feasibility, timing, sequence, or the goal route. Treat phase dates as approximate anchors and Transition when as review evidence, not hard gates. If a condition is unmet, consider adaptation, delayed or compressed transition, and remaining runway to the next goal instead of freezing the route. Old detailed strategies remain historical context. Do not proactively ask the athlete to convert one merely because it is legacy; create or update the map only when the athlete asks for strategy/season work or explicitly agrees to a long-term route change. 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, the description carries the full burden and does so thoroughly. It discloses the required sections, length constraints, build-from-current-facts rule, treatment of previous strategy as contamination risk, approximate nature of phase dates, review-trigger semantics, and the critical workflow of showing the exact markdown before saving and never showing one version and saving another.

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 quite long but front-loaded with the most critical constraint (save only after explicit confirmation). It is dense and contains no filler, yet its single-paragraph structure makes it harder to scan. The content earns its place given the complexity of the tool, but formatting with bullets or sections would improve clarity.

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 high complexity, no annotations, and no output schema, the description is exceptionally complete. It covers preconditions, content requirements, exclusions, confirmation workflow, adaptation guidance, and the distinction between near-term changes and review triggers. The only omission is explicit return-value info, but for a save operation this is not critical to invoke 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?

The input schema already provides exhaustive semantics for strategy_md, including length, required sections, content exclusions, and confirmation workflow. The tool description largely repeats this information, adding little new parameter-level meaning. The 'contamination risk' framing is a minor addition, but schema coverage is 100%, so 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 clearly states the tool saves an 'athlete preparation map' only after explicit user confirmation, which is specific and distinct from sibling tools like create_plan_event or create_note_event. It explicitly differentiates the map from a calendar, weekly plan, workout prescription, or full coaching analysis.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: save only after explicit user confirmation, only when the athlete asks for strategy/season work or explicitly agrees to a long-term route change. It also tells when not to use it (do not proactively ask to convert legacy strategies) and what not to store (session frequency, load targets, etc.).

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?

No annotations are provided, so the description carries the full burden. It describes the read-only nature implicitly through 'Check,' but it does not explicitly state that it has no side effects or side-effect-free behavior. The safety profile is not fully disclosed.

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 short sentences with no redundant information. The description is front-loaded with the action and includes a clear usage qualifier.

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

Completeness5/5

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

For a simple zero-parameter diagnostic tool with no output schema, the description is complete. It states what it does and when to use it, leaving no significant gaps.

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 baseline score is 4. The description adds nothing beyond the schema, but none is needed.

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: 'Check which STAS user is currently authenticated.' This clearly distinguishes the tool from sibling tools that deal with goals, plans, or profiles.

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 says 'Use only for diagnostics or reconnect troubleshooting,' providing explicit context on when to invoke the tool. It doesn't name alternatives because no sibling offers similar functionality, but the exclusion is clear.

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