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
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 24 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, with descriptions that explicitly guide selection. However, several adjacent pairs exist (log_entry/log_entries, skip_day/pause_days/unskip, summarize_day/summarize_topic, query_entries/summarize_topic) and depend on the detailed descriptions to avoid misselection.

Naming Consistency5/5

All tool names use snake_case with a predictable verb_noun pattern (e.g., create_dashboard, update_topic, summarize_day, log_entry). Minor singular/plural variation exists but does not break consistency.

Tool Count3/5

At 24 tools, the set is heavy for a typical MCP server and sits in the borderline 16-25 range. The broad domain justifies many tools, but some consolidation is possible (e.g., repeated entry logging, skip/pause management).

Completeness4/5

The surface covers core CRUD and lifecycle operations for dashboards, topics, entries, account settings, summaries, capabilities, companion settings, pauses, and skips. Minor gaps remain, such as no unarchive/restore operations and no direct get_topic/get_entry, though list/query tools mostly compensate.

Available Tools

24 tools
archive_dashboardArchive a dashboardA
Destructive
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYesThe dashboard, from list_dashboards.

Output Schema

ParametersJSON Schema
NameRequiredDescription
archivedYes
dashboardIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the bar is lower, yet the description still adds real value: the side effect that every paired screen stops showing the dashboard, the hard restriction on Home, and the requirement to confirm with the person first. It does not state permission requirements or reversibility, but the disclosed blast radius goes well beyond 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, zero filler, with the core action and its effect front-loaded ahead of the constraint and the confirmation cue. 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?

An output schema exists, so return values need no explanation, and the description covers the mutation's side effects, the key constraint, and the required confirmation. Given one simple parameter and full annotation coverage, nothing an agent needs in order to call this 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?

With one parameter at 100% schema description coverage, the schema (including the "from list_dashboards" provenance note) fully documents dashboardId; the description adds no format or sourcing detail. Baseline 3 applies since 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?

States a specific verb and resource ("Archives a custom dashboard") and clarifies the semantics of archiving as hiding rather than a hard delete. It does not explicitly differentiate itself from nearby siblings such as update_dashboard or archive_topic, but the verb+resource pairing is unambiguous and an agent can identify the operation immediately.

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?

Provides concrete usage conditions: "Home cannot be archived" is an explicit when-not rule and "Ask the person first" is a confirmation precondition. It stops short of naming alternative tools for the cases it excludes, but the guidance is clear and actionable rather than implied.

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
Destructive
Inspect

Removes a topic from the person's lists and takes its cards off their dashboards. Ask the person first.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicIdYesThe topic to archive, from list_topics.

Output Schema

ParametersJSON Schema
NameRequiredDescription
topicIdYes
archivedYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that by spelling out the blast radius (lists and dashboards) and imposing a human-confirmation step, which the annotations cannot express.

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, effect first and the confirmation requirement second, with no filler. Every clause earns its place.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the single parameter is fully documented in the schema. For a one-parameter destructive tool, effect plus consent requirement is everything an agent needs to call it 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?

Schema description coverage is 100% and there is a single required topicId whose schema description already says where to get it ('from list_topics'). The description adds nothing 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.

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 a topic') and goes further by naming the observable effects: gone from the person's lists and cards off dashboards. That distinguishes it from a plain delete, though it never explicitly contrasts with siblings like merge_topics or delete_entry.

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' is a genuine precondition and an unusual one worth stating, but it is consent guidance rather than when-to-use guidance. There is no indication of when archiving beats merging or updating a topic, or whether the action is reversible.

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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
dashboardYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare the non-destructive write profile (readOnlyHint=false, destructiveHint=false), and the description adds real behavior beyond that: availability gated on Dashly Plus with a hard cap of 3, and named failure modes PLAN_REQUIRED / DASHBOARD_LIMIT_REACHED. It also notes errors echo the offending path and allowed values. It stops short of other operational details (e.g. name collisions, ownership).

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?

Purpose is front-loaded and nearly every sentence carries actionable content, but it is a single dense paragraph with semicolon-heavy run-ons mixing document model, parameter semantics, and plan limits into one block. For a schema this complex some length is justified, though light structural separation would help.

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 the description covers what remains: creation semantics, empty-start behavior, document structure, quota/plan failure modes, error reporting, and routing to siblings. Nothing an agent needs to invoke this correctly appears to be 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 nominally 100%, so the baseline is 3, but the description adds genuine semantics the schema does not: 'auto' size is derived from the widgets, density 'compact' packs tiles closer, and style overrides card color/icon with icon names drawn from tiles.icons. The widget-compatibility pointer to get_capabilities compensates for the many undescribed nested properties.

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?

Opens with a specific verb+resource ('Creates a dashboard besides home') and immediately scopes it against siblings: update_dashboard for adding cards later, get_capabilities for widget/size rules. An agent can tell this apart from create_topic, update_dashboard, and archive_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?

Explicit when-to-use and when-to-go-elsewhere: empty start if no document, 'Add cards afterwards with update_dashboard', 'Which widgets each type allows... are in get_capabilities', and even design guidance ('Make one dashboard per theme... rather than one long wall'). Alternatives are named with the condition that selects them.

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.

ParametersJSON Schema
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.
visualNoThe 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.
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

ParametersJSON Schema
NameRequiredDescription
topicYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false) already establish that this is a non-destructive local write, and the description is consistent with that. It adds genuinely useful side-effect context beyond the annotations: a new topic's tile appears on home automatically and elsewhere only after a card is added, which an agent would otherwise not know.

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

Conciseness4/5

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

The description is four front-loaded sentences: purpose, placement side effect, reuse workflow, then type/unit rules. Nothing is padded, though the type enumeration duplicates the schema enum and could have been left to the structured field.

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 nested tool with an output schema, the description supplies the purpose, the reuse-first workflow, the placement behavior, and the unit discipline, while the schema handles all validation details. It is complete enough to call correctly, with the only gap being an explicit pointer to update_topic/archive_topic for existing topics.

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 every one of the 12 parameters carries a rich inline description, so the schema does the heavy lifting. The description's type list largely restates the type enum, and its only extra guidance ('Pick one unit and keep every value in it') is a durable logging rule rather than call-time parameter meaning, 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?

The description gives a concrete verb ('Creates') and elaborates the resource into a full taxonomy of trackable types, so an agent knows exactly what is being instantiated. It partially differentiates from siblings by naming list_topics and update_dashboard, but never states plainly that the output is a 'topic', leaving the object identity implicit rather than explicit.

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?

'List topics first and reuse a matching one' is explicit, actionable pre-call guidance, and the dashboard-placement sentence clarifies when a separate update_dashboard step is required. There is no when-not guidance (e.g. use update_topic to modify an existing topic instead), so it stops short of full routing coverage.

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

delete_entryDelete an entryB
Destructive
Inspect

Removes one entry. Ask the person first.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryIdYesThe entry to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
entryIdYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the danger profile is covered structurally. The description adds a human-in-the-loop requirement ("Ask the person first") that is not derivable from annotations, but it says nothing about permanence, undo, or error behavior on a destructive operation.

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?

Two short, front-loaded sentences with zero padding — the action comes first, the guardrail second. The second sentence is colloquial and its referent ("the person") is vague, which slightly blunts the structure.

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

Completeness2/5

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

For a destructive tool, the description leaves key agent-facing questions unanswered: whether deletion is reversible, whether any archive/restore sibling exists for entries, and what happens if the entryId is unknown. The output schema covers return values and annotations cover the safety flag, but the permanence question is material and unaddressed.

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% with a single required uuid parameter, so the schema fully documents entryId including its format. The description adds only the implicit singular scope ("one entry"), which the schema already conveys; baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource ("Removes one entry") with clear scope (a single entry), so an agent immediately knows what it does. It does not differentiate from siblings, however — notably the archive_* tools that appear to offer a softer removal path for other resources.

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?

"Ask the person first" is a caution about confirmation, not guidance on when to select this tool versus alternatives. No conditions, prerequisites, or alternatives (e.g. archive_topic/archive_dashboard style soft-delete) are named.

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-only
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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON 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, non-destructive, and closed-world, covering the safety profile. The description's contribution beyond that is the scope of sensitive data exposed (billing state, fair-use usage, token count), but it says nothing about auth requirements, rate limits, or freshness of the data, and an output schema already documents the return shape.

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 tight sentence with no filler and the most salient fields front-loaded. It reads as an unpunctuated fragment rather than a proper sentence, which slightly weakens the structure but wastes no words.

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

Completeness4/5

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

For a zero-parameter read tool with an output schema and full annotation coverage, nothing essential is missing; the description need not restate return values. It could be firmer about whose account is returned, since 'the person's' leaves the subject implicit.

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. The description correctly implies an implicit subject ('the person's') and adds nothing that could conflict with the empty schema.

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 the specific data the tool surfaces (email, timezone, subscription/billing state, fair-use usage, token count), which makes the resource unambiguous against siblings like get_capabilities or list_dashboards. However, it is a noun-phrase field dump with no verb, so it never explicitly says 'retrieves the current user's account' nor distinguishes itself from update_account.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as update_account or get_capabilities. The agent must infer the calling context purely from the enumerated content.

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-only
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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sizesYes
themeYes
tilesYes
typesYes
limitsYes
rangesYes
versionYes
pageWidgetsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover read-only, non-destructive, closed-world safety. The description adds meaningful invariants beyond that: the content is the same for everyone, does not change during a conversation, and should be read once and reused.

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?

It is front-loaded with the capability content, then gives the static/read-once usage rule, then notes the equivalent resource. Three tight sentences with no wasted text.

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 shape need not be explained, and annotations already carry the safety profile. With zero parameters and a clear static-reference usage rule, the description is complete for correct invocation.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is no parameter meaning to clarify. The description correctly does not add irrelevant input details.

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

Purpose5/5

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

The description states exactly what the tool returns: topic types, allowed widget kinds, card sizes, ranges, plans, and theme options. It distinguishes the tool from sibling dashboard/topic mutation tools by making clear this is a static capability reference, not an action on a dashboard.

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

Usage Guidelines5/5

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

It explicitly says to read it once before the first dashboard change and reuse it, telling the agent both when to call and not to poll. It also identifies the dashly://capabilities resource as an equivalent alternative.

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

get_dashboardGet a dashboardA
Read-only
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYesThe dashboard, from list_dashboards.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dashboardYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, closed-world, so the safety profile is covered. The description adds genuine value beyond that: it explains the returned document structure (a wall of ordered cards, each with 1-4 widgets) and cross-references external dependencies like update_topic for scene and tiles.icons for style.

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?

Return behavior is front-loaded in the first sentence and every subsequent clause conveys domain facts (sizes, style, scene, density, cross-references) rather than filler. It is dense and slightly run-on, but nothing is wasted.

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-parameter read tool with an output schema, annotations, and a schema that fully documents the input, the agent has what it needs. The description enriches understanding of the document model and defers widget specifics to get_capabilities, leaving little 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% for the single dashboardId parameter, whose description already says 'from list_dashboards.' The description adds no syntax or format detail about the parameter, so the baseline 3 is appropriate 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 first sentence states a specific verb and resource: 'Returns one dashboard and its full document.' The singular 'one dashboard' implies distinction from list_dashboards, though it never names the sibling explicitly. The rest of the description is domain model rather than purpose, but the core action is unambiguous.

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 an implicit read-before-mutate directive and points to get_capabilities (tiles.draws) for widget detail. However, it never says when to prefer this tool over list_dashboards or update_dashboard, so the routing is left to inference.

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

list_dashboardsList dashboardsA
Read-only
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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dashboardsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real value beyond that: result ordering (home first) and the non-obvious fact that the returned url is the person's own link that only opens after they 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 tight sentences, front-loaded with what is returned, then the calling condition. No filler or restated boilerplate.

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 spelled out, and annotations carry the safety profile. What remains — ordering, the sign-in caveat on the url, and when to call — is all present.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing for the description to clarify and the baseline is 4. No source/scope/limit parameters exist that would need explanation.

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 even characterizes the result shape — ordering (home first) and field set (id, kind, title, url). This clearly distinguishes it from get_dashboard (single) and list_topics (different resource).

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 does not name when NOT to use it or point to get_dashboard for a specific dashboard, 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.

list_topicsList topicsA
Read-only
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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
topicsYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds non-obvious behavior beyond annotations: this is a full unfiltered enumeration intended as an upfront discovery/caching call, and the ids it returns are reused by other tools. It does not mention whether the list is bounded or truncated.

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 it returns before moving to usage imperatives. Every sentence earns its place by adding routing or workflow information not present in structured fields.

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 zero-parameter, read-only enumeration tool with an output schema and full annotation coverage, nothing an agent needs is missing. Workflow placement (call first), id reuse, and the unit-conversion constraint are all stated.

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 no parameter semantics to document - baseline 4 applies. The field list in the description describes the return payload rather than inputs, and an output schema already exists.

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 every topic the person tracks) and enumerates the returned fields (id, type, unit, goal, entry count, last entry time). An agent can distinguish it from siblings like list_dashboards or get_dashboard 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 Guidelines5/5

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

Explicitly prescribes when to call it (once at the start), what to do with the result (remember the ids), and the alternative to avoid (creating a near-duplicate topic instead of reusing an existing one - routing to create_topic/update_topic). It also flags the downstream workflow constraint to convert values into the topic's unit before logging, pointing at log_entry.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYesThe entries to record, 1 to 50.

Output Schema

ParametersJSON Schema
NameRequiredDescription
todayYes
entriesYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description adds real value the annotations cannot: atomic all-or-nothing semantics and that the error identifies the offending entry. It does not mention any permission/auth requirement or rate limiting, so it stops 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.

Conciseness5/5

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

Three tight sentences, front-loaded with the capability and the cap, then the atomicity guarantee, then the routing advice. No filler or repetition of schema detail.

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?

A single-parameter batch write tool with an output schema, so return format need not be described. The description covers capability, limit, failure semantics, and sibling routing — everything needed to call it 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?

Schema description coverage is 100%, so the nested entry fields (note, tags, value, values, topicId, occurredAt) are fully documented in the schema. The description only restates the 1–50 bound already expressed by minItems/maxItems, adding no new parameter meaning. 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 ('Records up to 50 entries in one call') plus concrete scope examples (a meal's foods, a backlog). The batch framing directly distinguishes it from the sibling log_entry, so an agent can route 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?

Explicitly names the alternative and the condition that selects it: 'Prefer this over repeated log_entry calls.' The meal/backlog examples further clarify the intended multi-entry scenario, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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 this is a non-destructive, non-open-world write, so the safety profile is covered. The description adds real behavioral context beyond that: the entry is created in the topic's unit (implying unit mismatch is a failure mode) and the call returns today's running total, which sets response expectations.

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?

Four short sentences with the core action front-loaded before the prerequisites, and each directive earns its place. Slight redundancy in "reports today's total" against the existing output schema keeps it from a 5.

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 one-required-parameter write with a complete schema, an output schema, and annotations covering safety, the description supplies the remaining decision-relevant facts: the prerequisite lookup, the unit-conversion constraint, and the backdating field. 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 description coverage is 100% and the schema already documents value/unit conversion, occurredAt timezone handling, and topicId sourcing, so the description is largely restating structured data. Its only marginal addition is tying value conversion to the topic resource, which does not exceed the schema's own example.

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?

Uses a specific verb and resource ("Records one entry on a topic") and adds the immediate effect ("reports today's total"), so the agent knows this is a single-entry write with a summary response. However, it never distinguishes itself from the sibling log_entries, which an agent could easily confuse with this tool.

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

Usage Guidelines4/5

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

Gives concrete operational guidance: convert the value to the topic's unit first, use occurredAt for backdated entries, and call list_topics first if the topicId is unknown. It lacks any explicit exclusion or comparison against the sibling log_entries, so the when-not-to-use this tool case is left to inference.

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

merge_topicsMerge two topicsA
Destructive
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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
topicYes
movedFromYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the bar is lower. The description still adds real value by spelling out the destructive scope (source archived, entries relocated) and an explicit human-confirmation requirement that annotations do not convey. It does not say whether the merge is reversible.

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 core effect before the preconditions and the confirmation policy. No sentence is filler.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the key constraints (same type/unit, archival side effect, ask the person) are all covered for a two-parameter tool. Only failure behavior and permission requirements are unaddressed.

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 descriptions ('it is archived afterwards', 'the topic that keeps everything') say the same thing the description does. The description adds no format, constraint, or edge-case detail beyond the schema, so the 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?

Names a specific verb and both resources: it moves every entry from source into target and archives the source. This is more precise than the name 'merge', but it never contrasts itself with adjacent siblings like archive_topic or delete_entry, so sibling differentiation is left to inference.

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 precondition (same type and unit) and names the alternative route when the precondition fails (update_topic with unitFactor), plus a confirmation policy. It stops short of stating when NOT to use it, e.g. when a plain archive_topic is what's wanted.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
skipYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false but destructiveHint=false, so the operation is a non-destructive write. The description adds valuable context beyond that: paused days count like skipped ones, the start can be 7 days back to 60 days ahead, and the pause lasts at most 30 days. These constraints materially affect correct invocation.

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 tight sentences, front-loaded with purpose, then behavioral consequence, then the validity constraints. No filler; the size fits the tool's complexity.

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 annotations cover the safety profile. The description supplies the range/limit rules and the semantic effect on skipped days, leaving little an agent needs but the explicit tie-break against sibling tools.

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 'from', 'to', and 'reason' are fully documented in the schema itself. The description adds no format or edge-case detail beyond what the schema already provides, so the 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?

The description states a specific verb ('Pauses') and resource scope ('every topic over a range of days'), which clearly distinguishes it from the singular sibling skip_day. It doesn't explicitly name an alternative tool, but the 'every topic' scope plus the comparison to skipped days makes its role unambiguous.

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?

Usage context is offered via examples ('a holiday, an illness') and validity windows, but there is no explicit guidance on when to choose pause_days over skip_day or unskip. The conditions for use are implied rather than stated as a routing rule.

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-only
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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
entriesYes
nextCursorYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context: ordering (newest first), default page size, and the cursor-based paging contract ('pass the previous nextCursor to get the next page'). It doesn't cover permissions or error behavior, but that's minor for a read-only list.

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, zero waste, with the core behavior (what it lists, ordering, page size) front-loaded before the routing guidance. 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?

An output schema exists, so return-value explanation is unnecessary, and the description covers the remaining agent-relevant facts: ordering, pagination mechanics, and the sibling it competes with. Nothing needed 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 description coverage is 100%, so all five parameters (including from/to, limit, cursor, topicId) are already documented in the schema with formats and defaults. The description only restates the default page size and cursor usage, adding no syntax or format meaning beyond what the schema provides — 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 (lists), resource (a topic's entries), ordering (newest first), and pagination size (50/page), which distinguishes it from sibling tools like summarize_topic and list_topics without opening a 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?

Explicitly names the alternative for a common intent ('how was my week' → summarize_topic) and states the condition for choosing this tool instead ('find a specific entry or read notes'). Both when-not and when are covered.

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
Destructive
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).

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
companionYes

TDQS

A4.3/5.0
Behavior4/5

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

With annotations declaring mutation (readOnlyHint=false, destructiveHint=true), the description adds real context beyond them: the photo never leaves to Dashly, the result is a 'friendly likeness, not a portrait,' and renaming only occurs on request. It stops short of stating that the existing companion is replaced/overwritten, which the destructiveHint implies.

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 front-loaded paragraph that leads with what changes and where, then the branch rules. It is dense but every sentence carries a rule (rename gating, photo privacy, default naming); a little more structure would improve scannability.

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 no explanation. For a 3-param tool with a nested spec object and no required params, the description covers the person-vs-animal paths, privacy handling, and naming rules well; the one gap is not spelling out the replacement/destructive effect on the current companion.

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 the description compensates usefully: it explains the name parameter's two modes (rename vs. auto-assigned for a new animal like Pip/Bao/Lumi) and that the spec is drawn from fixed lists based on a photo. This adds semantics the schema alone does not convey.

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 (Changes) and resource (the companion), and goes further to say where it appears: status tile, calendar, and when they log. It also names the concrete values (Pip, Bao, Lumi, or a person) so an agent knows exactly what this tool manipulates.

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 conditional guidance — 'Pass a name alone to rename it (only when the person asks)' — and a workflow for the person case (look at a shared photo, fill spec from fixed lists). It lacks explicit exclusions against sibling tools, but no sibling touches the companion, so routing ambiguity is low.

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

skip_daySkip a dayAInspect

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
skipYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, which says little about side effects. The description supplies the substantive semantics: a skipped day does not count against the goal and does not break the streak, plus a hard lookback limit of 7 days. That is real behavioral context the annotations do not carry.

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: what it does, the key side-effect guarantee, the scope limit, and the alternative. The primary action and its most surprising property (streak-safe) are front-loaded, and nothing is 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. Given a single-required-param mutation, the description covers trigger, side effects, backdating limit, exclusions, and the sibling alternative — everything needed to call it 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?

Schema description coverage is 100%, including the date format, timezone, default-to-today behavior, and reason phrasing, so the schema already carries the parameter burden. The description adds only the framing that the topic must have a goal and that the reason is the person's own words. 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 and resource with scope: 'Takes one day off one topic with a goal.' It also names what it is not (not for tasks) and which sibling covers the broader case (pause_days), so an agent can separate it from unskip and pause_days without opening a 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?

Explicit trigger condition ('when the person says so'), an explicit exclusion ('not for tasks (move their due date instead)'), and a named alternative ('For time off across everything, use pause_days'). Both the when and the when-not are stated rather than implied.

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-only
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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
dayYes
scoreYes
skipsYes
topicsYes
companionYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a safe read-only, non-destructive, closed-world operation, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the exact categories of state reported, the scoring semantics ('5 of 7 on track'), and the rule that weekly/monthly/dated goals show progress 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?

The function of the tool and its result shape are front-loaded, and the explanation of per-field rows is load-bearing rather than filler. It is on the dense side, but each sentence carries distinct information.

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 structure needn't be spelled out, yet the description still characterizes the content usefully. Combined with the annotations it is nearly self-sufficient; only the missing sibling routing keeps it from being fully 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?

With one optional parameter and 100% schema description coverage, the schema already documents the date format and timezone convention. The description adds no parameter-level detail (no examples of interpretation, no note on what 'today' resolves to), 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 and resource ('summarize' + 'a day') and defines the scope precisely: each topic's state, the day score, skips and pauses. It also distinguishes the tool's granularity from a per-topic view by explaining that a field with its own daily goal becomes its own row, which an agent could not infer from the name alone.

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 usage triggers ('how was my day', 'how am I doing today') and defines what is in versus out of the day score. It does not name the obvious alternative, summarize_topic, or say when to prefer that sibling over this one, so it falls short of explicit 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-only
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.

ParametersJSON Schema
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

ParametersJSON 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 the safe read-only profile (readOnlyHint=true, destructiveHint=false), so the description only needs to add nuance. It does so usefully by disclosing that streak and best are computed within the supplied range, which changes how the agent picks a range value. It stops short of return-format or pagination notes, but those are covered by the output 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?

Three tight sentences, front-loaded with the returned metrics and immediately followed by the routing rule and the range caveat. Every clause carries information; nothing is 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?

With an output schema documenting returns and annotations covering the safety profile, the description supplies everything else an agent needs: what is summarized, which sibling to prefer, and the tricky range/streak interaction. Nothing material 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 baseline is 3. The description adds meaning beyond the schema by explaining the interaction between the range value and the streak metric ('counted within the range, so pass 90d or all'), which is genuine guidance the schema's enum description does not provide.

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 names a specific verb (summarize) and enumerates the exact outputs (totals, today, daily average, streak, best day, goal progress) scoped to a topic over a range. It is instantly distinguishable from siblings like query_entries, which it explicitly contrasts against.

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 a direct preference rule ('Prefer this over query_entries for "how was my week"'), naming the alternative and the triggering condition. It also gives an actionable hint ('pass 90d or all to find a long streak'), covering when-to-use at a practical level.

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
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
skipIdYesThe skip or pause to remove.

Output Schema

ParametersJSON Schema
NameRequiredDescription
skipIdYes
removedYes

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 and readOnlyHint=false, so the agent knows data is deleted. The description adds a genuinely non-structured behavioral requirement — obtain human confirmation before undoing — which is meaningful for a destructive operation. It still doesn't say whether the removal is reversible or what happens to the mark once deleted, keeping it short of 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 sentences, 16 words, front-loaded with the operation and its identifier source. Every clause carries information; nothing is padded or repeated.

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 described, and the destructive safety profile is covered by annotations plus the confirmation note. Coverage is nearly complete; only the reversibility/effect of the deletion is left unstated.

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

Parameters4/5

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

Schema coverage is 100% and the schema already explains skipId as 'The skip or pause to remove,' so the baseline would be 3. The description adds provenance the schema lacks — that the id originates from skip_day, pause_days or summarize_day — which tells the agent which values are valid and where to obtain them.

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

Purpose5/5

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

States a specific verb and resource ('Removes a skip or a pause by its id') and goes further by naming the sibling tools that create the ids (skip_day, pause_days, summarize_day). An agent can distinguish this undo tool from skip_day/pause_days 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 Guidelines3/5

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

The source-tool naming implicitly tells the agent this is the undo counterpart to skip_day/pause_days, but there is no explicit 'use this when X, not Y' routing statement or exclusion. The only explicit directive is procedural ('Ask the person first'), which is consent guidance rather than usage routing.

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

update_accountUpdate accountA
Destructive
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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
timezoneYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnly=false, destructive=true, openWorld=false). The description adds real behavioral context beyond them: the change retroactively redefines what 'today' means for all totals and streaks, and invalid input fails with example-bearing errors rather than silently. It stops short of stating reversibility or auth requirements.

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 with zero filler; the consequence of the change is front-loaded before the input-format note.

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 a single fully documented parameter, an output schema that covers return values, and annotations covering the safety profile, the description carries what remains: impact scope and validation behavior. Only the absence of any note on auth or whether prior entries are re-bucketed keeps it from a 5.

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

Parameters4/5

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

Schema coverage is 100%, so the IANA examples and format are already documented. The description still adds meaning the schema cannot: that the value determines the definition of 'today' for aggregates, and that invalid values are rejected with example output, which tells the agent how failure surfaces.

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 (changes) and a precise resource (the account timezone), and immediately names the scope of the effect (every total and streak). An agent can distinguish this from get_account and the other update_* siblings 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 Guidelines3/5

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

The description implies when to reach for it (when 'today' should mean something different) and gives a constraint on input format, but never states explicit when-to-use/when-not conditions or points at alternatives. Usage is inferable rather than prescribed.

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
Destructive
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 and every topic keeps a card: removing one puts it back, so restyle, resize or reorder there instead.

ParametersJSON Schema
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

ParametersJSON 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 the destructive/open-world profile, and the description adds substantial context beyond that: unmentioned content is preserved (patch semantics), a bad patch is rejected wholesale with an error naming the path and allowed values, and the home dashboard enforces an undeletable status card and topic cards. These are behavioral traits an agent could not infer from the annotations alone.

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?

Purpose and patch semantics are front-loaded, and nearly every sentence carries non-redundant guidance (defaults, rejection behavior, home-dashboard constraints). It is dense and somewhat run-on in the middle ('A dashboard document is one wall of cards in order...'), which costs a point on readability rather than on wasted content.

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 nested-patch mutation with an output schema and full annotation coverage, the description covers everything an agent needs: id sourcing, patch vs replace semantics, default widget/size behavior, validation failure mode, and dashboard-size rules. Nothing material is left to inference.

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 description coverage is 100%, so the baseline is 3, and the description adds genuine meaning: size 'auto' is derived from the widgets, style overrides card color/icon from tiles.icons, theme.density compact tightens tiles, and widgets may be omitted when upserting a card that names a topic (defaults apply). It does not enumerate every nested enum, hence 4 rather than 5.

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

Purpose5/5

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

The first sentence names a specific verb and resource ("Changes a dashboard's title or document") and immediately reframes 'document' as a patch rather than a replacement, which distinguishes it from create_dashboard and get_dashboard. It also points the agent at the needed sibling data sources (get_dashboard ids, get_capabilities for widgets/draws, update_topic for scene visuals).

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not guidance is present: read get_dashboard first and reuse ids, leave size at auto and style alone unless the user asks, keep at most 8 cards and split other themes onto their own dashboard, and on the home dashboard restyle/resize/reorder instead of removing because removal is reverted. These are concrete conditions and alternatives tied to real states.

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
Destructive
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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
entryYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag this as a destructive, non-read-only op. The description adds real behavioral context the annotations can't: patch semantics (unsent fields are untouched) and that `values` merges rather than replaces. It stops short of stating reversibility or failure modes for a destructive write.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core operation before the mutation semantics and the caution. No filler.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and the partial-update/merge model plus the confirmation caution cover the main risks of a destructive patch tool. It omits cross-tool routing guidance against log_entry and any note on side effects such as reordering when occurredAt changes.

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 an undocumented merge rule specific to `values` that materially changes how an agent should populate it. That is genuine semantic value beyond the schema rather than restatement.

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+resource ('Corrects an entry') and immediately qualifies the update semantics ('Only the fields you send change'), which separates it from create-style siblings like log_entry. 'Corrects' is slightly idiosyncratic versus the title's 'Update', and no sibling is named, so it falls short of 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?

Usage is implied: change an existing entry rather than logging a new one, and confirm unmentioned changes with the person. But it never says when to use update_entry instead of delete_entry plus log_entry, nor what prerequisites apply (ownership, entry existence). Guidance is present but incomplete.

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
Destructive
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.

ParametersJSON Schema
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.
visualNoThe 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.
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

ParametersJSON Schema
NameRequiredDescription
topicYes

TDQS

A4.1/5.0
Behavior5/5

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

With destructiveHint=true already declared, the description still adds real value: it discloses exactly what is destructive ("fields, statuses and goal replace the whole previous value"), that the unitFactor conversion rewrites every stored value and the goal, and that a unit change warrants human confirmation. That is the kind of what-gets-destroyed/authorship context annotations cannot express.

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, front-loaded with the core mutation behavior and the replace-instead-of-merge rule, followed by the highest-risk operation (unit conversion). No filler or repetition 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 13-parameter mutation tool with nested objects and an existing output schema, the description covers the essential patch semantics and the unit-change hazard. It could say more about the required topicId and general confirmation expectations, but the key risks are disclosed.

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 the schema does not: which parameters replace wholesale versus which merge, and the coupled unit+unitFactor contract. It does not spell out individual field constraints, which the schema already handles.

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 opens with a specific verb+resource ("Changes a topic") and immediately clarifies that this is a partial/patch update, which separates it cleanly from create_topic and archive_topic. It stops short of actually naming those siblings, so an agent must infer the boundary rather than being told it.

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

Usage Guidelines3/5

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

It gives one concrete when-to-do-X instruction ("ask the person before changing a unit") and explains the patch semantics, but offers no explicit guidance on when to reach for update_topic versus merge_topics, archive_topic, or create_topic. Usage is implied rather than stated.

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. 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

  • F
    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.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants such as Claude, ChatGPT, Gemini, and Cursor to a unified personal operating system, enabling them to track habits and streaks, manage task lifecycles and deadlines, and build syllabi and flashcard decks with FSRS-5 spaced-repetition scheduling through 102 typed tools. All reads and writes run against a single append-only event ledger over an OAuth 2.1-secured Streamable HTTP endpoint.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive AI-powered fitness tracking application that enables AI tools to interact intelligently with user fitness data, providing personalized workout plans, nutrition tracking, and progress analysis through natural language.
    15
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources