Skip to main content
Glama

editDashboard

Modify a Garmin dashboard page by replacing its layout, adding or removing custom widgets, and managing translated page and widget texts. Call without arguments to inspect current settings.

Instructions

Changes the layout, the custom widgets or the languages of the dashboard page (a page from the template; call writeDashboard first). Without arguments it only reads: the reply has the layout, the custom widgets, the missing texts of each language, the catalogue of built-in widgets and widgetApi, the guide to writing a custom widget. layout replaces the whole layout (the text of the page's 'Copy layout'); place adds widgets at the end of a board; widgets adds or replaces custom widgets by id and saves them in the widget library (/widgets.json), which every page from the template gets; removeWidgets removes them from this page and its boards, forgetWidgets also from the library. widgetTexts adds texts to custom widgets by id, language and key, e.g. {"longest-ride": {"de": {"title": "Längste Fahrt"}}}. languages adds page texts by key, e.g. {"de": {"title": "Training + Erholung"}}: keys and {placeholders} as in englishTexts: true; a text with "|" has a singular and a plural form. Missing texts show in English. removeLanguages removes languages that languages added.

Input Schema

NameRequiredDescriptionDefault
pathNoThe .html file; relative paths are inside the data dir
placeNo
layoutNoA whole layout: { base, boards: { all: [{ id, widget, type?, span, hidden? }] } }
widgetsNo
languagesNoTexts by language code and key
widgetTextsNoTexts of custom widgets by widget id, language code and key
englishTextsNoAlso return the English texts to translate
forgetWidgetsNoIds of custom widgets to remove from the library and from this page
removeWidgetsNoIds of custom widgets to remove from this page
removeLanguagesNoCodes of added languages, e.g. de

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that `layout` replaces the entire layout, that `widgets` persists into <data-dir>/widgets.json and propagates to every page from the template, and that `forgetWidgets` is more destructive than `removeWidgets` (library plus page). It does not state reversibility, error behavior, or whether changes are saved atomically, which for a 10-parameter mutation tool is the remaining gap.

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

Conciseness4/5

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

Front-loaded with the verb and resource, then one clause per parameter. It is dense but nearly every sentence carries a distinct semantic or side-effect detail, though the inline JSON examples make it longer than strictly necessary for an agent that can read the schema.

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 10-parameter, nested-object mutation tool with no output schema, the description covers the side effects of each parameter, the template/library propagation model, and — critically — what the argument-less read call returns (layout, widgets, missing texts, widget catalogue, widgetApi), substituting for the absent output schema.

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 already 80%, but the description adds genuine meaning the schema cannot: add-vs-replace semantics for `place`/`layout`, page-vs-library scope for `removeWidgets`/`forgetWidgets`, and worked examples for `widgetTexts` and `languages` including the singular/plural "|" convention and the English fallback. Only `path` and `englishTexts` are left to the schema, which documents both.

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

Purpose5/5

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

States a specific verb and resource with scope: it edits the layout, custom widgets or languages of a dashboard page derived from a template. It also disambiguates from the sibling writeDashboard by naming it as a prerequisite, and it discloses the no-argument read mode, so an agent knows exactly what surface the tool covers.

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

Usage Guidelines4/5

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

Gives a concrete precondition ("a page from the template; call writeDashboard first") and clarifies that calling with no arguments is a read, not a write. What's missing is explicit guidance on when to choose editDashboard over writeDashboard/scheduleDashboardRefresh for a given change, so it stops just short of full when/when-not coverage.

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