Log calories, habits, spending, mood, workouts and tasks by chatting; each thing you track becomes a live tile against its goal, with a dated history and a calendar.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
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.
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.
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.
Removes a topic from the person's lists and takes its cards off their dashboards. Ask the person first.
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.
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.
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.
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.
Removes one entry. Ask the person first.
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.
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.
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.
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.
Removes a skip or a pause by its id (from skip_day, pause_days or summarize_day). Ask the person first.
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.
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.
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.
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.
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.
Archives (hides) a custom dashboard: every screen paired to it stops showing it and is removed. Home cannot be archived. Ask the person first.
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.
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.
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.
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).
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
Dashly MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Dashly MCP tool your agent needs.
Free to start.