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.
ChatGPT is OpenAI's assistant. It can add custom MCP servers as plugins, which lets it call your tools from a conversation.
This guide connects Dashly MCP to ChatGPT through MewCP, so ChatGPT can use Dashly MCP's 24 tools, like list_topics, create_topic and update_topic, without your Dashly MCP credentials ever reaching the app.
Dashly MCP signs in through managed OAuth. MewCP stores the token encrypted, refreshes it before it expires and injects it only at call time. Your agent never holds it, so it can never leak it.
More apps
Work with pages, databases, blocks and collaborative knowledge stored in Notion. Create, update and organize content while building workflows around structured information and documentation.
Create, track, and manage Google Tasks and task lists directly from your AI workflows. This stateless, multi-tenant MCP server exposes the Google Tasks API for listing, creating, updating, completing, and deleting both tasks and task lists. Mutating tools such as update_task and update_tasklist return both the before and after state of the resource, making it easy to build assistants and automations that manage to-do lists and reminders on a users behalf
Connect AI agents to Miro to create, read, update, and organize collaborative boards, diagrams, sticky notes, shapes, and other visual workspace content.
Connect AI agents to ClickUp to manage tasks, projects, documents, lists, comments, and workflows, while searching workspace data and automating project management activities.
Other clients
Dashly MCP works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Dashly MCP tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
In ChatGPT, open Plugins and choose Add custom MCP.
Name it "mewcp" and paste the server URL.
Click Connect. A sign-in window opens; sign in to MewCP and approve access. No API key needed.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
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).