Skip to main content
Glama

Server Details

Track anything by telling your AI: calories, habits, mood, spending and tasks on one dashboard.

Ownership verified
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
Dashly

TDQS

A3.9/5.0

Scored across 24 tools

Disambiguation4/5

Most tools target a distinct resource+action, and descriptions explicitly steer between close pairs (log_entry vs log_entries, skip_day vs pause_days, summarize_day vs summarize_topic, query_entries vs summarize_topic). A few pairs share surface area but the descriptions resolve the boundary clearly, so misselection risk is low but not zero.

Naming Consistency4/5

Nearly all tools follow a lowercase snake_case verb_noun pattern (create_topic, update_dashboard, list_topics, query_entries, summarize_day). Minor deviations like 'unskip' (verb-only) and the singular/plural log_entry vs log_entries break the pattern slightly but remain readable.

Tool Count3/5

At 24 tools the set sits at the heavy end of the borderline band, with several near-duplicate CRUD pairs (log_entry/log_entries, summarize_day/summarize_topic). Each tool is justifiable for a rich tracking domain, but the count is large enough to feel heavy.

Completeness4/5

Coverage is strong across dashboards, topics, entries, account, summaries, skips/pauses and capabilities, with create/read/update/archive plus merge and bulk logging. Minor gaps exist: no explicit unarchive/restore for archived topics or dashboards, and archive substitutes for dashboard delete.

Available Tools

24 tools
archive_dashboardArchive a dashboardA
DestructiveIdempotent
Inspect

Archives (hides) a custom dashboard: every screen paired to it stops showing it and is removed. Home cannot be archived. Ask the person first.

NameRequiredDescriptionDefault
dashboardIdYesThe dashboard, from list_dashboards.

Output Schema

NameRequiredDescription
archivedYes
dashboardIdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: what actually gets destroyed (paired screens lose the dashboard and are removed), the Home restriction, and an explicit confirmation requirement.

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

Conciseness5/5

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

Three short clauses, front-loaded with the verb and its effect, then the constraint, then the caution. No filler and nothing important buried at the end.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers the destructive semantics, the Home exclusion, and the confirmation requirement. What remains slightly ambiguous is whether the paired screens themselves are deleted or merely unlinked, but the operational picture is otherwise 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?

Only one parameter, and schema description coverage is 100% – the schema already documents dashboardId as a uuid sourced from list_dashboards. The description adds nothing further about the parameter, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (archives/hides) and resource (custom dashboard), then explains the concrete effect: every screen paired to it stops showing it. This clearly separates it from update_dashboard and delete_entry, so an agent can pick it without opening other schemas.

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 real exclusion ('Home cannot be archived') and a procedural prerequisite ('Ask the person first'), which is exactly the guidance an agent needs before invoking a destructive tool. It does not name a sibling alternative, but none is obviously needed for this operation.

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

archive_topicArchive a topicA
DestructiveIdempotent
Inspect

Removes a topic from the person's lists and takes its cards off their dashboards. Only for a topic the person no longer tracks: to take a topic off home or another dashboard, remove its card with update_dashboard instead. Ask the person first.

NameRequiredDescriptionDefault
topicIdYesThe topic to archive, from list_topics.

Output Schema

NameRequiredDescription
topicIdYes
archivedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description goes beyond them by spelling out the concrete side effects (removal from lists, cards stripped from dashboards) and the need for human confirmation, though it does not say whether the action is reversible or undoable.

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

Conciseness5/5

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

Three short sentences, each doing distinct work: effect, routing rule, and confirmation requirement. The primary effect is front-loaded and there is no filler.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and annotations cover the destructive/idempotent profile. Combined with the explicit side-effect description and the alternative-tool routing, an agent has everything needed to decide and 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?

There is a single parameter with 100% schema description coverage, including its UUID format and the source tool ('from list_topics'). The description adds no parameter-level detail, so the baseline 3 applies since the schema carries the full burden.

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 gives a specific verb (removes/archives) and resource (topic), and explicitly scopes the effect: the topic leaves the person's lists and its cards come off dashboards. It is distinguishable from the sibling update_dashboard, which is named as the tool for a different need.

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 states the condition for use ('Only for a topic the person no longer tracks') and the exclusion with a named alternative ('to take a topic off home or another dashboard, remove its card with update_dashboard instead'). It also adds a required confirmation step ('Ask the person first'), leaving nothing to inference.

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

create_dashboardCreate a dashboardAInspect

Creates a dashboard besides home. Without a document it starts with no cards. A dashboard document is one wall of cards in order; each card shows one topic (or a page-level widget) with 1 to 4 widgets. size is auto (the default, chosen from the widgets), sm, md, wide or lg; style can override the card color and icon (a name from tiles.icons); the scene a topic plays in its tile is the visual of the topic, set with update_topic; theme.density compact sets the tiles closer together. Which widgets each type allows and what each card size draws are in get_capabilities (tiles.draws). Errors name the path that is wrong and the allowed values. Add cards afterwards with update_dashboard. Make one dashboard per theme (Health, Money, Work) rather than one long wall. Dashboards besides home come with Dashly Plus, up to 3: on another plan this fails with PLAN_REQUIRED, and past the limit with DASHBOARD_LIMIT_REACHED; tell the person which.

NameRequiredDescriptionDefault
titleYesThe dashboard title, up to 80 characters.
documentNoOptional full starting document. Leave out to start empty.

Output Schema

NameRequiredDescription
dashboardYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare write/safety flags; the description adds substantive behavior: optional document (starts empty without one), a hard limit of 3 non-home dashboards, plan gating with named error codes (PLAN_REQUIRED, DASHBOARD_LIMIT_REACHED), and that validation errors name the offending path and allowed values. This is genuine value beyond the structured hints.

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 core action and mostly information-dense, with no filler sentences. The middle clause chain (size/style/scene/density) is semicolon-heavy and reads as a run-on, which slightly hurts scannability.

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 creation tool with a rich nested schema and an output schema, the description covers the pieces an agent needs: empty-start behavior, plan/limit failure modes with exact error codes, validation error shape, and the follow-up path. Nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100% and enum lists already live in the schema, but the description adds meaning the schema cannot: that size 'auto' is a computed default derived from the widgets, that style overrides card color/icon from tiles.icons, that scene comes from update_topic, and that theme.density compact tightens tiles. That lifts it above the baseline 3.

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

Purpose5/5

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

States a specific verb and resource ('Creates a dashboard besides home') and immediately scopes it against the built-in home dashboard and against update_dashboard for adding cards. An agent can distinguish it from archive_dashboard/list_dashboards/update_dashboard without reading schemas.

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

Usage Guidelines4/5

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

Explicitly routes follow-up work to update_dashboard ('Add cards afterwards with update_dashboard') and points to get_capabilities (tiles.draws) for widget/type constraints, plus a design norm ('one dashboard per theme'). No explicit when-not-to-use beyond plan gating, so it stops just short of the top band.

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

create_topicCreate a topicAInspect

Creates something to track. Its tile appears on home by itself; it is on another dashboard only when you add a card for it there with update_dashboard. List topics first and reuse a matching one. Types: sum (amounts that add up in a day), measurement (latest reading of the day counts), count (how many times), duration (minutes), money (amounts in a currency), checkbox (done or not each day), event (things that happened, no number), task (to-dos with statuses). Pick one unit and keep every value in it.

NameRequiredDescriptionDefault
goalNoAn optional goal in the topic unit. Always set `direction`; Dashly never guesses it. at_least is a target to reach (water 2000 ml, protein 140 g, steps). at_most is a limit to stay under (calories 2000 kcal, spending 400 USD, drinks). between is a range with `min` and `max` (sleep 7 to 9 h). at_least and at_most take `value`. Give `per` (day, week, month or year) for a goal that repeats, or `by` (YYYY-MM-DD) for one that runs once until a date ("75 kg by 1 February": at_most 75, by 2027-02-01; "save 2,000 by June": at_least 2000, by the date). A dated goal on a reading is judged on its smoothed trend from the reading when it was set. `counts` is amount (the default) or days, for goals like "gym 3 days a week" (direction at_least, value 3, per week, counts days). If the person gives a number without saying whether it is a limit or a target, ask them.
nameYesWhat the person calls it, e.g. "Water" or "Morning run". Up to 80 characters.
typeYesHow entries behave. sum: amounts that add up through the day (water, calories). measurement: a reading where the latest of the day counts (weight, blood pressure). count: how many times (cigarettes, pushups); an entry with no value counts as 1. duration: time spent, always in minutes (unit "min"). money: spending or income in a currency. checkbox: done or not done for the day (habits). event: things that happened, with no number (headache, meeting). task: to-dos with a status. rating: a score on a scale the person chooses, averaged over the day (mood 1 to 5, energy, pain).
unitNoThe unit every value is stored in, e.g. "ml", "kg", "USD". Choose one unit and convert every value into it before logging. Required for sum, measurement and money; duration is always "min"; checkbox, event and task take none.
colorNoThe topic's own colour, one of: sky, blue, indigo, violet, fuchsia, pink, orange, teal, emerald, cyan, sand, silver. Leave it out and Dashly gives the next colour no other topic uses. Choose by meaning when one fits (sky for water, orange for food, indigo for sleep) and change it when the person asks.
scaleNoA scale { min, max, labels? } of whole steps, labels optional words for some of them ({ "1": "awful", "5": "great" }). Required for rating topics. On an event topic it lets each entry carry a severity (values.severity), e.g. a headache from 1 to 5.
fieldsNoExtra numeric fields kept beside the main value, e.g. protein and carbs on a meal. Only for sum and measurement topics, up to 20. Each has a lowercase key, a label, a unit and an optional goal shaped like the topic goal, so protein can be at_least while calories are at_most.
visualNoWhat the topic draws in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to: a scene, a chart, or plain (no column, the number and its words across the whole tile). get_capabilities lists each group's visuals with what they show. Pick by meaning (a piggy bank for savings, a ring for a daily target, day bars for counting with no goal); use a chart or plain when the person wants a quieter, professional look; leave it out for the one that fits what it tracks. A visual from another group is refused with the ones that fit.
polarityNobuild (the default) for something the person wants more of or just tracks; avoid for something they want less of (headaches, panic attacks, cigarettes, takeaway). With avoid, a day with nothing logged is a good day, each entry counts against it, the streak is days without, and a goal can only be a limit (at_most). Set it whenever the topic is something to avoid; ask if unsure.
statusesNoTask topics only: the statuses a task moves through, in order. At least one must be terminal (done). Defaults to To do, Doing, Done.
unitLabelNoHow the unit reads aloud, e.g. "millilitres". Defaults to the unit.
descriptionNoOne optional sentence about what is tracked. Up to 500 characters.

Output Schema

NameRequiredDescription
topicYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare write semantics (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower. The description adds real non-schema behavior: a new topic's tile lands on home by itself and appears elsewhere only via update_dashboard, colour is auto-assigned when omitted, and units must be normalized ('pick one unit and keep every value in it'). No permissions or failure modes are covered, hence not a 5.

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

Conciseness4/5

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

Front-loads the core action, then dedup guidance, then the type taxonomy. Most sentences earn their place, but the long inline type enumeration duplicates the enum's own descriptions and pushes the important 'list first' guidance into a mid-paragraph position.

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 12-parameter tool with nested oneOf goals and 20+ sibling tools, the description covers purpose, dedup workflow and cross-tool routing, and an output schema exists so return values need not be explained. It leaves the goal/scale/fields structure entirely to the schema, which is acceptable given 100% schema coverage.

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

Parameters3/5

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

Schema description coverage is 100% and the property descriptions are extremely detailed (goal shapes, type semantics, unit rules, colour, polarity), so the schema already carries parameter meaning. The description largely restates this (its type list even omits 'rating'), so baseline 3 is correct.

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 concrete creation verb and resource ('Creates something to track', a topic) and immediately distinguishes it from siblings by naming list_topics (reuse) and update_dashboard (adding a card elsewhere). The full type taxonomy makes the artifact this produces unambiguous.

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

Usage Guidelines5/5

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

Gives an explicit precondition/alternative: 'List topics first and reuse a matching one' tells the agent when not to call this tool. It also routes a related need (placing a tile on another dashboard) to update_dashboard, so the agent knows where the boundary of this tool lies.

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

delete_entryDelete an entryA
DestructiveIdempotent
Inspect

Removes one entry. Ask the person first.

NameRequiredDescriptionDefault
entryIdYesThe entry to delete.

Output Schema

NameRequiredDescription
deletedYes
entryIdYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds a behavioral requirement annotations cannot express - human confirmation before execution - which materially changes how an agent should invoke it. It still omits whether the deletion is permanent or recoverable, so not a 5.

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, zero filler, and the action is front-loaded ahead of the confirmation instruction. Nothing could be removed without losing information.

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?

An output schema exists and annotations cover destructiveness and idempotency, so the description need not explain returns. What it does not address is whether the deletion is irreversible and what happens to data associated with the entry (e.g., its log records), which matters for a destructive, open-world operation. Adequate but with a clear gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single entryId parameter is documented as 'The entry to delete.' with a uuid format. The description adds nothing beyond the schema, so the baseline 3 applies rather than a higher score.

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?

States a specific verb and resource ('Removes one entry'), and the singular scope ('one') is precise enough that an agent knows this deletes a single record by id rather than bulk-deleting. It does not differentiate from sibling archive_topic/archive_dashboard, which is the only missing element for a 5.

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?

'Ask the person first' establishes a confirmation prerequisite before invocation, which is genuine usage guidance. However it offers no alternatives (e.g., whether archive is a non-destructive substitute) and no explicit when-not-to-use condition, so it remains implied rather than complete.

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

get_accountGet accountB
Read-onlyIdempotent
Inspect

The person's email, timezone, subscription status and billing state, this month's entry usage against the fair-use limit, and how many personal tokens exist.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
emailYes
usageYes
billingYes
timezoneYes
personalTokensYes
subscriptionStatusYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description contributes only content scope (fair-use limit comparison, token count) and says nothing about auth requirements or staleness/caching of the returned figures.

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

Conciseness4/5

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

A single sentence with no filler, and the most salient items (email, timezone, billing state) are front-loaded. It is slightly weakened by being a noun-phrase inventory with no leading verb to anchor the action.

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

Completeness4/5

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

With zero parameters, full annotation coverage, and an output schema present, the description need not explain return shape, and it does confirm the scope of what is returned. It is adequate for a simple read tool, with the only real gap being routing guidance versus update_account.

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 takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The field list it provides is about output content, not inputs, so it neither helps nor hurts here.

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 enumerates exactly what the tool surfaces (email, timezone, subscription/billing state, fair-use usage, personal token count), so an agent can tell it reads the caller's own account snapshot. It never states a verb like 'retrieve' and never contrasts with the sibling update_account, so it is clear but not sibling-differentiating.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives such as update_account or get_capabilities. The agent must infer from the name alone that this is the read path for account state.

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

get_capabilitiesGet capabilitiesA
Read-onlyIdempotent
Inspect

What a dashboard can contain: the topic types, which widget kinds each topic type allows, card sizes and what each draws, ranges, plans and theme options. It is the same for everyone and does not change during a conversation: read it once, before your first dashboard change, and reuse it. Same content as the dashly://capabilities resource.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
sizesYes
themeYes
tilesYes
typesYes
limitsYes
rangesYes
versionYes
pageWidgetsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context beyond the annotations: the payload is identical for all users and immutable within a conversation, which tells the agent caching/reuse is safe. It does not mention payload size or any truncation behavior, keeping it short of 5.

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

Conciseness4/5

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

Three sentences, front-loaded with the payload enumeration and closed with the reuse instruction. Minimal waste, though 'It is the same for everyone' and 'does not change during a conversation' are two clauses carrying nearly the same caching point and could be merged.

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

Completeness5/5

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

An output schema exists, so return-value documentation is not the description's burden, and it nonetheless previews the returned content accurately. With no parameters and annotations covering safety, an agent has everything needed to call this correctly and know when not to call it again.

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?

Zero parameters, so there is nothing for the description to disambiguate and the baseline 4 applies. The description also correctly implies the tool takes no filtering arguments, since the content is described as fixed for everyone.

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 enumerates exactly what the tool yields: topic types, allowed widget kinds per topic type, card sizes and their rendering, ranges, plans and theme options. That is far more specific than the bare title 'Get capabilities' and clearly separates it from every mutation sibling (create_*/update_*/archive_*). It stops just short of 5 because it never states the action verb plainly (e.g. 'returns a static catalog'), relying on the reader to infer that this is the read that produces those things.

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 gives explicit timing and cadence: read once, before the first dashboard change, then reuse. It also names the equivalent resource (dashly://capabilities) so an agent knows there is an alternative access path rather than a second tool call to make. No ambiguity about when this should be invoked.

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

get_dashboardGet a dashboardB
Read-onlyIdempotent
Inspect

Returns one dashboard and its full document. A dashboard document is one wall of cards in order; each card shows one topic (or a page-level widget) with 1 to 4 widgets. size is auto (the default, chosen from the widgets), sm, md, wide or lg; style can override the card color and icon (a name from tiles.icons); the scene a topic plays in its tile is the visual of the topic, set with update_topic; theme.density compact sets the tiles closer together. Which widgets each type allows and what each card size draws are in get_capabilities (tiles.draws). Read it before changing it.

NameRequiredDescriptionDefault
dashboardIdYesThe dashboard, from list_dashboards.

Output Schema

NameRequiredDescription
dashboardYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds useful domain context about what the returned document contains (card ordering, size options, style overrides, density), but says nothing about pagination, response shape limits, or access requirements beyond that.

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 purpose is correctly front-loaded in the first sentence, but the remainder is a dense, semicolon-chained block of domain model detail (size, style, scene, density) for a one-parameter getter. The content is relevant but overstuffed relative to what an agent needs to invoke the tool.

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

Completeness4/5

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

With an output schema present, the description need not restate return values, and it instead supplies the conceptual model needed to interpret the document, plus a pointer to get_capabilities. That covers the essentials for a read-only getter, leaving only minor gaps around response limits.

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

Parameters3/5

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

Schema coverage is 100% and the single dashboardId parameter is fully documented in the schema ('from list_dashboards'), so the description adds no parameter meaning. Baseline 3 applies when the schema does the heavy lifting.

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 opening sentence states a specific verb and resource ('Returns one dashboard and its full document'), which is immediately distinguishable from list_dashboards. It never explicitly names a sibling, but the singular scope makes the retrieval role clear.

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?

'Read it before changing it' gives a contextual cue that this precedes update_dashboard, and it routes the agent to get_capabilities (tiles.draws) for widget details. However, there is no explicit statement of when to prefer this over list_dashboards or other readers, so usage is only implied.

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

list_dashboardsList dashboardsA
Read-onlyIdempotent
Inspect

Lists the person's dashboards, home first, with their id, kind (home or custom), title and url (the person's own link, which opens after they sign in). Call this when the person asks to see a dashboard and give them its url.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dashboardsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior the annotations cannot: the ordering rule ('home first'), the kind taxonomy, and the fact that the url is the person's own link that only resolves after sign-in.

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, no filler. The scoping/return information is front-loaded and the usage instruction follows, so the agent gets purpose before procedure.

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

Completeness4/5

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

An output schema exists and the description wisely does not re-document the full return payload, yet it still names the key fields and the sign-in caveat on the url. For a no-param, read-only, closed-world list tool this is essentially complete; only the absence of a pointer to get_dashboard for single-dashboard lookups is a minor omission.

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 takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly avoids inventing filtering options that the schema does not support.

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 ('Lists the person's dashboards') and goes further by enumerating the returned fields (id, kind, title, url), which makes it unambiguous versus the singular get_dashboard sibling. An agent can tell it is a collection read, not a single-item fetch, without opening the schema.

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

Usage Guidelines4/5

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

Gives an explicit trigger: 'Call this when the person asks to see a dashboard and give them its url.' It also clarifies the follow-through action (hand the person the url). It does not name the alternative to use when only one known dashboard is wanted (get_dashboard), so no when-not guidance is present.

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

list_topicsList topicsA
Read-onlyIdempotent
Inspect

Lists everything the person tracks, with each topic's id, type, unit, goal, entry count and last entry time. Call it once at the start, remember the ids, and reuse a topic that already fits instead of creating a near-duplicate. Convert every value into the topic's unit before logging.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
topicsYes
welcomeNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: it acts as a bootstrap call whose ids should be cached, and it discloses the cross-tool constraint that values must be expressed in the topic's `unit` before logging.

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 tight sentences, front-loaded with what is returned, then the call-once/cache instruction, then the unit-conversion caveat. No filler and no restatement of the title.

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

Completeness5/5

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

An output schema exists, so return values need not be re-specified, yet the description still orients the agent on the fields and adds the workflow guidance (call once, reuse, normalize units) that the schema and annotations cannot convey. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing to disambiguate and the baseline for a zero-parameter schema applies. The description correctly adds no parameter discussion and instead spends its words on usage.

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 gives a specific verb and resource ('Lists everything the person tracks') and enumerates exactly what each topic record contains (id, type, unit, goal, entry count, last entry time). This makes it immediately distinguishable from list_dashboards and from the entry-oriented siblings.

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 states when to call ('once at the start') and gives a decision rule that steers the agent away from create_topic ('reuse a topic that already fits instead of creating a near-duplicate'). It stops short of naming create_topic or update_topic as explicit alternatives, so the routing is implied rather than spelled out.

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

log_entriesLog several entriesAInspect

Records up to 50 entries in one call, for example every food in a meal or a backlog. All or nothing: if one entry is invalid, none are written and the error says which. Prefer this over repeated log_entry calls.

NameRequiredDescriptionDefault
entriesYesThe entries to record, 1 to 50.

Output Schema

NameRequiredDescription
todayYes
entriesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=true, idempotent=false, so the safety profile is covered. The description adds real value beyond them: all-or-nothing atomicity and the fact that the error identifies the offending entry, which materially affects how an agent should retry or split a batch.

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

Conciseness5/5

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

Three short sentences, front-loaded with the capability, then the atomicity constraint, then the sibling routing. Every sentence carries distinct information with no repetition of the title or 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 single-parameter batch tool with an output schema, the description covers the operation, its limit, its failure semantics, and its relationship to log_entry. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the nested entries schema documents note, tags, value, values, topicId and occurredAt in detail, so the schema does the heavy lifting. The description only restates the 50-item cap that maxItems already encodes and adds example scenarios, 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 gives a specific verb (records), resource (entries), and scope (up to 50 in one call), then distinguishes the tool from its sibling by naming log_entry explicitly. An agent can tell immediately that this is the batch variant of log_entry.

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?

"Prefer this over repeated log_entry calls" names the alternative and the condition that selects it, and the meal/backlog examples make the intended batch use concrete. There is no explicit statement of when not to use it (e.g., for a single entry), so it falls short of a full when/when-not treatment.

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

log_entryLog an entryAInspect

Records one entry on a topic and reports today's total. Convert the value into the topic's unit first. Use occurredAt for something that happened earlier. Call list_topics first if you do not have the topic id.

NameRequiredDescriptionDefault
noteNoFree text. For a task this is its title and is required.
tagsNoShort labels, e.g. ["breakfast"].
valueNoThe amount in the topic's unit (convert first: 2 litres is 2000 for a "ml" topic). Required for sum, measurement, duration and money; optional for count (defaults to 1); omit for checkbox, event and task.
valuesNoExtra numbers or text keyed by name: a topic's declared fields (e.g. protein), a money topic's category and currency, or a task's status, due, assignee and priority.
topicIdYesThe topic to log to, from list_topics.
occurredAtNoWhen it happened, as an ISO 8601 timestamp such as 2026-10-08T07:30:00. Without an offset it is read in the person's timezone. Omit for now.

Output Schema

NameRequiredDescription
entryYes
todayYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the safety profile (write, non-idempotent, non-destructive, open-world). The description adds real behavioral content beyond that: the value must be pre-converted to the topic's unit, and the call reports today's total. No auth, rate-limit, or failure behavior is disclosed, but the added context is material.

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

Conciseness5/5

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

Four short, front-loaded sentences with no filler - the core action leads, followed by the two most error-prone guidance points and the prerequisite. Every sentence earns its place.

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

Completeness4/5

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

For a six-parameter write tool with a full output schema, the description covers the essential gotchas (unit conversion, backdating, topic id prerequisite). Remaining detail on note/tags/values lives in the schema, so nothing critical is missing, though how to find a topic's unit could be spelled out.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents value conversion ('2 litres is 2000 for a ml topic'), occurredAt semantics, and the required note field. The description's conversion and occurredAt sentences largely restate schema content, adding workflow framing but little new meaning. Baseline 3 applies.

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?

States a specific verb and resource - 'Records one entry on a topic' - and the singular 'one entry' implicitly separates it from the batch sibling log_entries. However, it never names that sibling, so the differentiation must be inferred from the plural tool name rather than stated.

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 concrete operational context: call list_topics first if the topic id is unknown, use occurredAt for backdated entries, and convert values before logging. It stops short of naming alternatives (e.g. log_entries for multiple entries, update_entry for corrections).

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

merge_topicsMerge two topicsA
DestructiveIdempotent
Inspect

Moves every entry from the source topic into the target and archives the source. Both must have the same type and unit; convert first with update_topic and unitFactor if the units differ. Ask the person first.

NameRequiredDescriptionDefault
sourceIdYesThe topic to fold in; it is archived afterwards.
targetIdYesThe topic that keeps everything.

Output Schema

NameRequiredDescription
topicYes
movedFromYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructive=true and idempotent=true, but the description adds what actually happens to data (all entries are moved, the source is archived rather than deleted) and the type/unit compatibility constraint. The human-confirmation requirement is behavior an agent cannot infer from the annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the effect, then the precondition, then the confirmation requirement. Every sentence changes how the agent would call the tool; nothing is padding.

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

Completeness5/5

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

An output schema exists, so return values need not be described. For a destructive merge, the description covers effect, precondition, alternative path, and the need for human approval — everything an agent needs to invoke it safely.

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

Parameters3/5

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

Schema description coverage is 100%: sourceId and targetId are both documented in the schema, including the fact that sourceId gets archived. The description adds no format or identifier detail beyond that, so the schema carries the load and a baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (merge/move) and resource (topics), and spells out the full effect: entries move to the target and the source is archived. This clearly distinguishes it from archive_topic and update_topic, which are the nearest siblings.

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

Usage Guidelines5/5

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

Gives an explicit precondition (same type and unit) and routes the agent to the alternative path when it fails: convert first with update_topic and unitFactor. It also adds a confirmation requirement ('Ask the person first'), so the agent knows both when to call it and when to hold back.

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

pause_daysPause every topicAInspect

Pauses every topic over a range of days: a holiday, an illness. Paused days count like skipped ones. A pause can start up to 7 days back or up to 60 days ahead, and lasts up to 30 days.

NameRequiredDescriptionDefault
toYesLast paused day, YYYY-MM-DD (the same as from for one day).
fromYesFirst paused day, YYYY-MM-DD.
reasonNoOptional: why, in the person's words (sick, holiday, rest day).

Output Schema

NameRequiredDescription
skipYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare a non-read-only, non-destructive, non-idempotent mutation, but the description adds substantive behavior the annotations cannot convey: the valid start window (7 days back to 60 days ahead), the 30-day maximum duration, and the semantic equivalence between paused and skipped days. It omits what happens on invalid ranges or how pauses interact with already-logged entries.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and effect, then the constraints. Every clause carries information (use cases, skip equivalence, valid window) with no filler.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the annotations cover the safety profile. With the description supplying scope, window limits, and duration cap, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so from/to/reason are documented in the schema (including the 'same as from for one day' case). The description adds constraint meaning to from/to that the schema lacks: the allowed 7-days-back / 60-days-ahead start window and the 30-day maximum span.

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 (pauses) and resource (every topic) with explicit scope, and the title/description agree that the action applies across all topics rather than one. An agent can distinguish it from skip_day (single day) and archive_topic without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete use cases (holiday, illness) and relates the effect to skipping via 'Paused days count like skipped ones,' which implies the alternative semantics. It stops short of explicitly naming skip_day/unskip as alternatives or stating exclusions, so it is clear context rather than full routing guidance.

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

query_entriesQuery entriesA
Read-onlyIdempotent
Inspect

Lists a topic's entries, newest first, 50 per page by default. Pass the previous nextCursor to get the next page. For questions like "how was my week" use summarize_topic instead; use this to find a specific entry or read notes.

NameRequiredDescriptionDefault
toNoLatest time, ISO 8601. Without an offset it is read in the person's timezone.
fromNoEarliest time, ISO 8601. Without an offset it is read in the person's timezone.
limitNoEntries per page, up to 200. Default 50.
cursorNoThe nextCursor from the previous page. Leave out for the first page.
topicIdYesThe topic to read.

Output Schema

NameRequiredDescription
entriesYes
nextCursorYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description only needs to add context. It adds real behavioral detail: newest-first ordering, default page size of 50, and the cursor mechanism for continuing. It stops short of describing return shape, but an output schema exists.

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

Conciseness5/5

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

Three short sentences: the read operation and ordering first, pagination next, alternative-tool routing last. No filler and nothing that repeats the schema verbatim.

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 paginated list tool with full schema coverage, annotations, and an output schema, the description covers the gaps that matter (ordering, page size, cursor chaining, tool choice). Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds meaning beyond the schema by explaining the cursor's role ('pass the previous nextCursor to get the next page') and how pagination chains across calls, plus the default page size that governs limit usage.

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 (lists) and resource (a topic's entries) with ordering and page size, which no sibling schema needs to be opened to understand. It also explicitly names summarize_topic as the other tool, so the agent can tell them apart.

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

Usage Guidelines5/5

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

Gives both when-to-use ('find a specific entry or read notes') and when-not-to-use with a concrete example ('how was my week' -> summarize_topic). The alternative is named explicitly rather than implied.

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

set_companionSet the companionA
DestructiveIdempotent
Inspect

Changes the companion that shows the person's day on the status tile, the calendar and when they log: Pip the penguin, Bao the capybara, Lumi the axolotl, or a person that looks like them. Pass a name alone to rename it (only when the person asks). For a person, look at a photo they share and fill the spec from the fixed lists; the photo itself never goes to Dashly, and the drawing is a friendly likeness, not a portrait. A new animal without a name gets its own (Pip, Bao, Lumi).

NameRequiredDescriptionDefault
kindNopenguin, capybara, axolotl, or person (needs a spec and a name).
nameNoWhat the companion is called.
specNo

Output Schema

NameRequiredDescription
companionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's job is to add context — and it does: the shared photo never goes to Dashly, the output is a friendly likeness rather than a portrait, and an unnamed new animal auto-gets a default name. It does not spell out that setting a companion replaces/overwrites the existing one, which is the main remaining behavioral gap for a destructive tool.

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

Conciseness4/5

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

Three dense sentences, front-loaded with what the tool changes before the mode-specific rules. All sentences carry information an agent needs (rename rule, photo handling, default naming). Slightly heavy, but nothing is redundant.

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

Completeness5/5

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

An output schema exists, so return values need not be described. The description covers the two operating modes, the privacy-sensitive photo path, the naming defaults, and the spec sourcing, which together with the nested schema is enough for an agent to call this correctly.

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

Parameters4/5

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

Schema coverage is 67% and three params exist, so the schema does substantial work. The description still adds real semantics beyond it: 'name alone' means rename, spec must be filled from the fixed lists, and the animal kinds carry default names (Pip, Bao, Lumi). It does not clarify required-vs-optional spec fields for the person kind, but overall it compensates for the partial schema coverage.

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

Purpose5/5

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

States a specific verb+resource (set/change the companion) and immediately explains what the companion is and where it surfaces (status tile, calendar, logging). The named characters and the person option make the scope concrete, and no sibling tool touches this resource, so it is trivially distinguishable from the dashboard/topic/entry tools.

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 mode-level guidance: pass a name alone to rename '(only when the person asks)', and use the photo-and-spec path when the companion is a person. It does not name an alternative tool, but no sibling overlaps this resource, so there is nothing to exclude. Clear context without explicit when-not rules.

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

skip_daySkip a dayA
Idempotent
Inspect

Takes one day off one topic with a goal, when the person says so ("skip stretching today, my back hurts"). A skipped day does not count against the goal and does not break the streak. Up to 7 days back; not for tasks (move their due date instead). For time off across everything, use pause_days.

NameRequiredDescriptionDefault
dayNoThe day to skip, YYYY-MM-DD in the person's timezone. Leave out for today.
reasonNoOptional: why, in the person's words (sick, holiday, rest day).
topicIdYesThe topic to skip, from list_topics.

Output Schema

NameRequiredDescription
skipYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover the safety profile (idempotent, non-destructive, non-read-only), and the description adds genuine domain behavior: a skipped day does not count against the goal and does not break the streak, and only up to 7 days back. That is real context beyond structured fields. It could say more about re-skipping or what the streak/goal state looks like afterward, but the output schema covers return values.

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

Conciseness5/5

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

Four tightly packed sentences, front-loaded with the core purpose, then the behavioral rule, then the boundary conditions and the sibling pointer. No filler; every clause carries 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?

For a 3-param mutation with full schema coverage, annotations, and an output schema, nothing an agent needs to select and call it correctly is missing: purpose, trigger, exceptions, window, and sibling routing are all stated.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents day, reason, and topicId including formats and the today-default. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb+resource+scope ('takes one day off one topic with a goal') and explicitly carves out what it is not: not for tasks, not organization-wide. An agent can distinguish it from pause_days and unskip without reading either schema.

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

Usage Guidelines5/5

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

Gives the triggering condition with a natural-language example ('skip stretching today, my back hurts'), names the exclusion (tasks -> move their due date), and routes to the alternative (pause_days for time off across everything). When/when-not/alternatives are all present.

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

summarize_daySummarize a dayA
Read-onlyIdempotent
Inspect

How a day went across everything the person tracks: each topic's state (met, under, over, not logged, skipped), the day score ("5 of 7 on track") and any skips or pauses. Every daily goal counts on its own: a field with a daily goal (protein on Food) is its own row, with field set and a name like "Food · Protein", so Food can be on track for calories and behind on protein. Use it for "how was my day" or "how am I doing today". Weekly, monthly and dated goals show their progress but stay out of the day score.

NameRequiredDescriptionDefault
dayNoThe day, YYYY-MM-DD in the person's timezone. Leave out for today.

Output Schema

NameRequiredDescription
dayYes
scoreYes
skipsYes
topicsYes
companionYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this a read-only, idempotent, non-destructive call, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: how the score is computed, that a field with a daily goal becomes its own row (e.g. "Food · Protein"), and that weekly/monthly/dated goals appear but are excluded from the day score.

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 what the summary contains, then scoring rules, then usage triggers. It is dense but nearly every clause carries information; the field-row explanation is the longest piece but justified by the non-obvious scoring behavior it clarifies.

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

Completeness4/5

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

An output schema exists, so return formatting need not be described, yet the description goes further by explaining the semantics behind the score and row layout that a schema cannot convey. Combined with a fully documented parameter, an agent has enough to call it correctly; only explicit sibling routing is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single `day` parameter is fully documented in the schema (format, timezone, default of today). The description adds nothing further about the parameter, so the baseline of 3 applies.

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 states a specific verb+resource and details the scope: per-topic state across everything the person tracks, plus the day score. It implicitly separates itself from summarize_topic by scoping to the whole day ('across everything the person tracks'), but never names the sibling, leaving a small ambiguity risk given the near-identical name.

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

Usage Guidelines4/5

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

It gives explicit trigger phrases for when to use it: "how was my day" or "how am I doing today". There is no stated when-not or named alternative, so it stops short of full routing guidance.

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

summarize_topicSummarize a topicA
Read-onlyIdempotent
Inspect

Totals, today, daily average, streak, best day and goal progress for a topic over a range. Prefer this over query_entries for "how was my week". Streak and best are counted within the range, so pass 90d or all to find a long streak.

NameRequiredDescriptionDefault
fieldNoA declared field key (e.g. protein) to summarize instead of the main value.
rangeYesThe window to cover, ending today.
topicIdYesThe topic to summarize.

Output Schema

NameRequiredDescription
bestYes
daysYes
flowYes
goalNo
unitYes
rangeYes
todayYes
totalYes
trendYes
latestYes
streakYes
averageYes
topicIdYes
adherenceYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds a genuinely non-obvious behavioral trait: streak and best are computed only within the requested range, so a short range truncates a long streak. That nuance is not derivable from the annotations or schema.

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

Conciseness5/5

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

Two sentences with no filler: the first front-loads the outputs, the second handles routing and the range/streak caveat. Every clause carries information an agent needs.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description still supplies the output inventory, the sibling routing rule, and the range/streak interaction, leaving nothing material missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema's terse 'window to cover' by explaining that the range bounds the streak/best calculations, giving semantic weight to the range parameter and concrete value guidance (90d, all). The field parameter, however, is left entirely to 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 description enumerates the exact computed outputs (totals, today, daily average, streak, best day, goal progress) for a specific resource (a topic over a range), so the agent knows precisely what it returns rather than a generic 'summary'. It also explicitly contrasts itself with the sibling query_entries, making it distinguishable without opening either schema.

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

Usage Guidelines5/5

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

It names the alternative (query_entries) and the exact query pattern that should route here ('how was my week'), then adds a concrete usage rule for the streak use case (pass 90d or all). Both when-to-use and how-to-use are explicit.

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

unskipUndo a skip or a pauseA
DestructiveIdempotent
Inspect

Removes a skip or a pause by its id (from skip_day, pause_days or summarize_day). Ask the person first.

NameRequiredDescriptionDefault
skipIdYesThe skip or pause to remove.

Output Schema

NameRequiredDescription
skipIdYes
removedYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds two things the annotations cannot: where the identifier originates and a mandatory human-confirmation step, which is meaningful for a destructive operation. It stops short of describing the resulting state (e.g. whether entries logged during the skip are affected).

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 clauses, no filler: the action and its id provenance come first, the safety directive second. Every word earns its place and nothing an agent needs is buried.

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

Completeness4/5

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

With one fully documented parameter, an output schema handling return values, and annotations covering the destructive/idempotent profile, the description is nearly complete. Only the post-removal effect on the underlying day is unstated, which is a minor gap for a single-id undo 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value by enumerating the three producer tools the uuid must be drawn from — information absent from the schema's generic 'The skip or pause to remove.'

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?

Specific verb ('Removes') plus specific resource ('a skip or a pause'), scoped by id. It goes further than the name by naming the exact sibling tools that produce the ids (skip_day, pause_days, summarize_day), so an agent can place it in the workflow without opening any schema.

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

Usage Guidelines4/5

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

The description establishes the precondition for use — the id must come from skip_day, pause_days, or summarize_day — and adds an explicit confirmation rule ('Ask the person first'). It does not name a when-not case or a sibling alternative (e.g. re-skipping instead of unskipping), which keeps it short of a 5.

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

update_accountUpdate accountA
DestructiveIdempotent
Inspect

Changes the account timezone, which decides what "today" means for every total and streak. Use an IANA name; an invalid one is rejected with examples.

NameRequiredDescriptionDefault
timezoneYesAn IANA timezone name, e.g. "UTC", "America/New_York", "Europe/London", "Asia/Kolkata".

Output Schema

NameRequiredDescription
timezoneYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the change has account-wide consequences for totals and streaks, and invalid input is rejected with concrete examples, which tells an agent how to recover from a failed call.

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 tight sentences: impact is front-loaded, the input constraint follows. No filler, no restatement of the title.

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 single-required-parameter mutation with an output schema and full annotations, the description supplies the effect, the input format, and the failure mode. It does not address whether access is restricted or whether historical data is re-bucketed, minor gaps for a destructive account-level change.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already names the format as an IANA timezone with four concrete examples. The description repeats the IANA requirement, adding only that invalid names are rejected (with examples), which is a small increment over what structured data provides. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Changes the account timezone') and immediately scopes the effect to every total and streak, which separates it from the many update_* siblings that touch dashboards, entries, or topics rather than the account itself.

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?

There is no explicit 'use when/when not' clause, but the description of the downstream effect (timezone decides what 'today' means for all totals and streaks) implicitly signals when this setting matters. With no real alternative tool for account-level timezone changes, the absence of sibling routing is a modest gap rather than a serious one.

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

update_dashboardUpdate a dashboardA
DestructiveIdempotent
Inspect

Changes a dashboard's title or document. The document is a patch, not a replacement: upsert or remove cards by id and move cards to a new position, and everything you do not mention stays. A dashboard document is one wall of cards in order; each card shows one topic (or a page-level widget) with 1 to 4 widgets. size is auto (the default, chosen from the widgets), sm, md, wide or lg; style can override the card color and icon (a name from tiles.icons); the scene a topic plays in its tile is the visual of the topic, set with update_topic; theme.density compact sets the tiles closer together. Which widgets each type allows and what each card size draws are in get_capabilities (tiles.draws). A patch that is wrong is rejected whole, and the error names the path and the allowed values. Widgets are optional when you upsert a card that names a topic: it gets that topic's default widgets. Leave size at auto and style alone unless the person asks for something specific. Keep a dashboard to the few topics that belong together, at most 8 cards; put other themes on their own dashboard. On home the status card always stays first; topic cards come and go there as on any dashboard. When the person wants a topic off home, remove its card here; never archive the topic for that.

NameRequiredDescriptionDefault
titleNoNew title.
documentNoA patch to the document: upsert, remove and move cards by id. Ids come from get_dashboard; read it first and reuse them. A card whose id does not exist yet is added at the end; move takes a card id and its new index.
dashboardIdYesThe dashboard, from list_dashboards.

Output Schema

NameRequiredDescription
dashboardYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare mutation/destructiveness/idempotency, and the description adds behavior they cannot express: atomic all-or-nothing rejection with path-and-allowed-values errors, patch-not-replacement semantics, default widget inheritance when a topic is named, and the 8-card ceiling. This is exactly the extra context annotations leave out.

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 core action, then layered detail; each sentence mostly earns its place for a deeply nested patch schema. A few clauses (theme.density compact, the tile/scene aside) drift into adjacent topics and could be trimmed without loss.

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

Completeness5/5

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

For a 3-parameter tool with a deeply nested document schema and an output schema, the description covers patch semantics, defaults, error behavior, size limits and cross-tool routing. Nothing needed to call it correctly is missing, and return values are rightly left to the 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 100%, so the baseline is 3, but the description adds real meaning: why size defaults to auto, that style overrides card color/icon, what theme.density compact does, and that widgets are optional when a topic is named. It stops short of explaining move-index or theme fields, so it exceeds baseline without being exhaustive.

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 ("Changes a dashboard's title or document") and immediately qualifies the scope with patch semantics ("upsert or remove cards by id ... everything you do not mention stays"). This lets an agent distinguish it from create_dashboard, archive_dashboard and get_dashboard without opening any schema.

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

Usage Guidelines5/5

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

Names alternatives explicitly and conditions for each: read get_dashboard first for ids, use get_capabilities for widget/size behavior, use update_topic for a topic's tile scene, and an explicit when-not ("never archive the topic for that" when removing a card from home). It also routes non-matching work elsewhere ("put other themes on their own dashboard").

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

update_entryUpdate an entryA
DestructiveIdempotent
Inspect

Corrects an entry. Only the fields you send change; values merges into the existing values. Ask the person before changing something they did not mention.

NameRequiredDescriptionDefault
noteNoFree text. For a task this is its title and is required.
tagsNoShort labels, e.g. ["breakfast"].
valueNoThe amount in the topic's unit (convert first: 2 litres is 2000 for a "ml" topic). Required for sum, measurement, duration and money; optional for count (defaults to 1); omit for checkbox, event and task.
valuesNoExtra numbers or text keyed by name: a topic's declared fields (e.g. protein), a money topic's category and currency, or a task's status, due, assignee and priority.
entryIdYesThe entry to change, from query_entries or a log result.
occurredAtNoWhen it happened, as an ISO 8601 timestamp such as 2026-10-08T07:30:00. Without an offset it is read in the person's timezone. Omit for now.

Output Schema

NameRequiredDescription
entryYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint, readOnlyHint=false, so the safety profile is covered. The description adds genuinely non-obvious merge semantics ('only the fields you send change; values merges into the existing values'), which is the key behavioral fact an agent needs. It does not say what a destructive change overwrites or how errors surface.

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

Conciseness5/5

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

Three short sentences, purpose first, then the non-obvious merge rule, then the caution. No filler and nothing buried.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the schema is rich enough to carry field-level requirements. Nothing critical is missing for a partial-update tool, though a note on what a destructive overwrite replaces would round it out.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six parameters in detail, giving a baseline of 3. The merge note for `values` adds marginal meaning beyond the schema's own field description, but no other parameter semantics are clarified.

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?

States a specific verb and resource ('Corrects an entry'), which separates it from create/log/archive/delete siblings. It does not explicitly name any alternative, so it falls short of the 5 bar for sibling differentiation.

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?

Implies usage (use this to correct an existing entry) and adds one real guideline: ask the person before changing something they did not mention. However, it gives no routing versus delete_entry or log_entry, and no precondition such as obtaining entryId from query_entries.

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

update_topicUpdate a topicA
DestructiveIdempotent
Inspect

Changes a topic. Only the fields you send change; fields, statuses and goal replace the whole previous value. To change the unit and keep history correct, send the new unit with unitFactor, which multiplies every stored value and the goal (litres to millilitres: 1000). Ask the person before changing a unit.

NameRequiredDescriptionDefault
goalNoNew goal, or null to remove it. Replaces the whole goal.
nameNoNew name. Up to 80 characters.
unitNoNew unit. Pair it with unitFactor to convert what is already stored.
colorNoThe topic's own colour, one of: sky, blue, indigo, violet, fuchsia, pink, orange, teal, emerald, cyan, sand, silver. Leave it out and Dashly gives the next colour no other topic uses. Choose by meaning when one fits (sky for water, orange for food, indigo for sleep) and change it when the person asks.
scaleNoA scale { min, max, labels? } of whole steps, labels optional words for some of them ({ "1": "awful", "5": "great" }). Required for rating topics. On an event topic it lets each entry carry a severity (values.severity), e.g. a headache from 1 to 5.
fieldsNoThe full list of extra fields. Replaces the existing list, so include the ones to keep.
visualNoWhat the topic draws in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to: a scene, a chart, or plain (no column, the number and its words across the whole tile). get_capabilities lists each group's visuals with what they show. Pick by meaning (a piggy bank for savings, a ring for a daily target, day bars for counting with no goal); use a chart or plain when the person wants a quieter, professional look; leave it out for the one that fits what it tracks. A visual from another group is refused with the ones that fit.
topicIdYesThe topic to change, from list_topics.
polarityNobuild (the default) for something the person wants more of or just tracks; avoid for something they want less of (headaches, panic attacks, cigarettes, takeaway). With avoid, a day with nothing logged is a good day, each entry counts against it, the streak is days without, and a goal can only be a limit (at_most). Set it whenever the topic is something to avoid; ask if unsure.
statusesNoThe full list of task statuses. Replaces the existing list, so include the ones to keep.
unitLabelNoNew spoken label for the unit.
unitFactorNoMultiplier applied to every stored value and to the goal when the unit changes: litres to millilitres is 1000. Needs a new unit, and cannot be repeated once the unit has changed.
descriptionNoNew description, or null to clear it.

Output Schema

NameRequiredDescription
topicYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint and idempotentHint, yet the description goes well beyond them by disclosing exactly what is destroyed (fields, statuses and goal are wholly replaced by what is sent) and that unit changes rewrite every stored value and the goal via a multiplier. It also adds a consent guardrail for that history-rewriting action, which is the highest-risk behavior of this tool.

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

Conciseness5/5

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

Four tight sentences, roughly fifty words, with the core partial-update rule front-loaded and the narrower unit-conversion caveat last. No sentence is filler, and no important clause is buried.

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 13-parameter tool with an output schema and 100% schema coverage, the description supplies the pieces structured data cannot: merge-vs-replace semantics, the history-rewriting effect of a unit change, and a consent requirement. It omits any pointer to create_topic/merge_topics for adjacent intents, which is the only meaningful gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including unitFactor's multiplier example and its dependence on a new unit. The description restates the unit/unitFactor pairing but adds no syntax or format detail the schema does not already carry, so baseline 3 applies.

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?

"Changes a topic" gives a clear verb+resource and the following sentences sharpen it into a partial-update tool whose list-valued fields are full replacements. It does not explicitly distinguish itself from siblings like create_topic, merge_topics or archive_topic, but the mutation semantics make the scope unambiguous once read.

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 clearly sets the operating context: send only what should change, and pair a new unit with unitFactor to keep history consistent. It adds a real usage constraint ("Ask the person before changing a unit"), but never names an alternative sibling or states when a different tool should be used instead.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedcreate_topic2 fields changed
      • changedInput schema / properties / visual / description
        Previous value: -"The scene the topic plays in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to; get_capabilities lists each group's scenes with what they show. Pick by meaning (a piggy bank for savings, a balloon that pops for screen time); leave it out for the one that fits what it tracks. A scene from another group is refused with the ones that fit."New value: +"What the topic draws in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to: a scene, a chart, or plain (no column, the number and its words across the whole tile). get_capabilities lists each group's visuals with what they show. Pick by meaning (a piggy bank for savings, a ring for a daily target, day bars for counting with no goal); use a chart or plain when the person wants a quieter, professional look; leave it out for the one that fits what it tracks. A visual from another group is refused with the ones that fit."
      • changedInput schema / properties / visual / enum
        Previous value: -[
        -  "climb",
        -  "building",
        -  "rocket",
        -  "piggy",
        -  "glass",
        -  "cups",
        -  "balloon",
        -  "hourglass",
        -  "boat",
        -  "cairn",
        -  "skyline",
        -  "hotair",
        -  "path",
        -  "weather",
        -  "gumball",
        -  "tray",
        -  "sun"
        -]New value: +[
        +  "climb",
        +  "building",
        +  "rocket",
        +  "piggy",
        +  "gauge",
        +  "ring",
        +  "dots",
        +  "macros",
        +  "plain",
        +  "glass",
        +  "cups",
        +  "balloon",
        +  "hourglass",
        +  "boat",
        +  "cairn",
        +  "grid",
        +  "skyline",
        +  "hotair",
        +  "path",
        +  "line",
        +  "ranges",
        +  "weather",
        +  "dial",
        +  "usual",
        +  "days",
        +  "gumball",
        +  "tray",
        +  "sun"
        +]
    • Changedupdate_topic2 fields changed
      • changedInput schema / properties / visual / description
        Previous value: -"The scene the topic plays in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to; get_capabilities lists each group's scenes with what they show. Pick by meaning (a piggy bank for savings, a balloon that pops for screen time); leave it out for the one that fits what it tracks. A scene from another group is refused with the ones that fit."New value: +"What the topic draws in its tile's level column everywhere (home, every dashboard, its page, the calendar), from the group its type, goal and polarity point to: a scene, a chart, or plain (no column, the number and its words across the whole tile). get_capabilities lists each group's visuals with what they show. Pick by meaning (a piggy bank for savings, a ring for a daily target, day bars for counting with no goal); use a chart or plain when the person wants a quieter, professional look; leave it out for the one that fits what it tracks. A visual from another group is refused with the ones that fit."
      • changedInput schema / properties / visual / enum
        Previous value: -[
        -  "climb",
        -  "building",
        -  "rocket",
        -  "piggy",
        -  "glass",
        -  "cups",
        -  "balloon",
        -  "hourglass",
        -  "boat",
        -  "cairn",
        -  "skyline",
        -  "hotair",
        -  "path",
        -  "weather",
        -  "gumball",
        -  "tray",
        -  "sun"
        -]New value: +[
        +  "climb",
        +  "building",
        +  "rocket",
        +  "piggy",
        +  "gauge",
        +  "ring",
        +  "dots",
        +  "macros",
        +  "plain",
        +  "glass",
        +  "cups",
        +  "balloon",
        +  "hourglass",
        +  "boat",
        +  "cairn",
        +  "grid",
        +  "skyline",
        +  "hotair",
        +  "path",
        +  "line",
        +  "ranges",
        +  "weather",
        +  "dial",
        +  "usual",
        +  "days",
        +  "gumball",
        +  "tray",
        +  "sun"
        +]
  2. 1 tool update
    • Changedlist_topics1 field changed
      • addedOutput schema / properties / welcome
        Added value: +{
        +  "type": "string"
        +}
  3. 24 tool updates
    • First observedarchive_dashboard
    • First observedarchive_topic
    • First observedcreate_dashboard
    • First observedcreate_topic
    • First observeddelete_entry
    • First observedget_account
    • First observedget_capabilities
    • First observedget_dashboard
    • First observedlist_dashboards
    • First observedlist_topics
    • First observedlog_entries
    • First observedlog_entry
    • First observedmerge_topics
    • First observedpause_days
    • First observedquery_entries
    • First observedset_companion
    • First observedskip_day
    • First observedsummarize_day
    • First observedsummarize_topic
    • First observedunskip
    • First observedupdate_account
    • First observedupdate_dashboard
    • First observedupdate_entry
    • First observedupdate_topic

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI assistant to log what you ate, drank, or did, storing it privately in your own Cloudflare account and doing the nutrition math via the USDA food database. Supports GitHub sign-in with an allowlist so only chosen users can connect.
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Your digital kitchen, powered by AI. Track what you have, discover what you can cook, and get guided through every recipe — step by step, timer by timer.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources