Skip to main content
Glama

writeDashboard

Writes or updates a Garmin training dashboard HTML page with recent weekly data, a digest for coach notes, and optional settings, while preserving existing layout and widgets.

Instructions

Writes the training dashboard page (default /garmin-dashboard.html) with the data of the last weeks weeks, and returns its path and a short digest of the data (totals, weekly sums, load, best efforts, races, strength top sets, HRV, recovery, fitness age, sync) for the coach notes. An existing page keeps all its code, layout and widgets: only its data is replaced. A page from an older template gets the new template and keeps its layout and widgets. Every page from the template also gets the custom widgets of the widget library (/widgets.json), not placed on a board. layout writes a new page from the template: preset (the default widgets) or blank (empty boards). page writes your own page code instead; it must contain /* garmin-data:start /null/ garmin-data:end */. A replaced page is kept as .bak. notes: at most 5 plain-text coach notes; the server escapes them. settings replace the page's settings (title, headline, sports, data to leave out, languages, themes); without them the page keeps its own. The page holds only the data, languages and themes they keep. pageLanguages in the result lists the languages of the page's Language menu, and settings the settings that the page keeps. missingProfileLanguage is the language of the Garmin profile when the page has no texts in it (it shows English); editDashboard languages adds it. missingWidgetTexts lists the custom widgets that miss texts in a language of the page, with those languages; editDashboard widgetTexts adds them. preview: true writes nothing: it returns the digest, the activities of each board and the settings of the page.

Input Schema

NameRequiredDescriptionDefault
pageNoYour own page code, with an empty garmin-data block, instead of the template
pathNoThe .html file; relative paths are inside the data dir
notesNoCoach notes, plain text; without notes the page has none
weeksNoWeeks to cover, default 12, max 52
layoutNoWrite a new page from the template with this layout
previewNoWrite nothing: return the digest, the activities of each board and the page settings
settingsNoThe page settings; replaces the page's own

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior5/5

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

With zero annotations the description carries the full burden and does so richly: states that only data is replaced on an existing page, that older-template pages get migrated while keeping layout, that a replaced page is kept as <file>.bak, that `notes` are server-escaped and capped at 5, and that `preview` writes nothing. This is exactly the mutation/overwrite/backup context an agent needs before a destructive write.

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

Conciseness3/5

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

Nearly every sentence carries information, but the text is a dense wall of backticked parameter references with no front-loading of the core use case beyond the first sentence and no bullet or grouping structure. It is readable only if parsed linearly, which hurts fast scanning.

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?

No output schema exists, yet the description enumerates the digest contents (totals, weekly sums, load, best efforts, races, strength top sets, HRV, recovery, fitness age, sync) and explains result fields like `pageLanguages`, `settings`, `missingProfileLanguage` and `missingWidgetTexts` including the sibling call that fixes each. For a 7-param tool with a nested settings object, this is 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 coverage is 100%, so baseline is 3, but the description adds genuine meaning: the `page` marker block requirement, `layout` preset-vs-blank semantics, `settings` replacing (not merging) the page's own values, and `weeks` default of 12. It stops short of elaborating several nested `settings` fields that the schema already covers.

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?

Opens with a specific verb and resource ('Writes the training dashboard page') plus its default path and return value (path + digest). It also distinguishes itself implicitly from editDashboard by referencing that sibling for languages/widgetTexts edits, though the read-only counterpart (getDashboardData) is never named to sharpen the boundary.

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

Usage Guidelines4/5

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

Gives clear selection logic for its own modes: `layout` vs `page`, `preview: true` for a dry run, and routing to editDashboard for `languages` and `widgetTexts`. It lacks explicit 'when not to use this / use getDashboardData instead' guidance, so the alternative for reading is left to inference.

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