# Kanso > Todos, routines, calendar and habits in one place This application exposes the same capabilities over REST and MCP. Agents should prefer MCP. ## Authentication - REST: send an API key as `Authorization: Bearer ` (keys are created by the user in the app; prefix `zts_`). - MCP: the same bearer API key, or OAuth 2.1 with PKCE, discovered from https://kanso.so/.well-known/oauth-protected-resource. Read-only tools need the read scope; everything else needs the write scope. ## Endpoints - MCP server (Streamable HTTP): https://kanso.so/api/mcp - OpenAPI document: https://kanso.so/api/openapi.json - REST: POST https://kanso.so/api/v1/ with the arguments as a JSON object; GET https://kanso.so/api/v1 lists every method - OAuth authorization server metadata: https://kanso.so/.well-known/oauth-authorization-server ## MCP tools (read-only) - activities_byId (read-only): Get one of the caller's activities by id, or null. - activities_mine (read-only): List the caller's activities (name, emoji, personal/work type, how often it is due), pinned first, then by name. - affirmations_byId (read-only): Get one of the caller's affirmations by id, or null. - affirmations_mine (read-only): List the caller's affirmations, newest first; pass category for one category. - chats_byId (read-only): Get one of the caller's chats with its messages, oldest first, or null. - chats_folderById (read-only): Get one of the caller's chat folders by id, or null. - chats_folders (read-only): List the caller's chat folders in their sort order. - chats_mine (read-only): List the caller's chats without messages: pinned first, then most recently updated. - checkinAnswers_byId (read-only): Get one of the caller's check-in answers by id, or null. - checkinAnswers_mine (read-only): List the caller's check-in answers, latest day first; filter by days from/to (YYYY-MM-DD, inclusive) and templateId. - checkinCompletions_byDay (read-only): Get the caller's finished check-in for one template on one day (YYYY-MM-DD), or null. - checkinCompletions_byId (read-only): Get one of the caller's finished check-ins by id, or null. - checkinCompletions_mine (read-only): List the caller's finished check-ins (template, day, reflection note), latest day first; filter by days from/to (YYYY-MM-DD, inclusive) and templateId. - checkinQuestions_byId (read-only): Get one of the caller's check-in questions by id, or null. - checkinQuestions_mine (read-only): List the caller's check-in questions (prompt, answerType scale/mood/yesNo/number/text, unit) in step order; pass templateId for one template's. - checkinTemplates_byId (read-only): Get one of the caller's check-in templates by id, or null. - checkinTemplates_mine (read-only): List the caller's check-in templates (e.g. Morning, Evening: name, emoji, slot, active, remind), in order. - checklistItems_byId (read-only): Get one of the caller's checklist items by id, or null. - checklistItems_mine (read-only): List the caller's checklist items (text, note, section), in order; pass checklistId for one checklist's. - checklistLists_byId (read-only): Get one of the caller's checklist lists by id, or null. - checklistLists_mine (read-only): List the caller's checklist lists, and the ones shared with them, by position. Every one of the caller's checklists sits in one of them. - checklistRuns_byId (read-only): Get one of the caller's checklist runs by id, or null. - checklistRuns_mine (read-only): List the caller's checklist runs (in progress while finishedAt is null, with the checklists run together and the checked item ids), newest first. - checklists_byId (read-only): Get one of the caller's checklists by id, or null. - checklists_mine (read-only): List the caller's checklists (name, emoji, markdown description), in sidebar order. - checklistSections_byId (read-only): Get one of the caller's checklist sections by id, or null. - checklistSections_mine (read-only): List the caller's checklist sections (named groups of items), in order; pass checklistId for one checklist's. - contacts_byId (read-only): Get one of the caller's contacts by id, or null. - contacts_mine (read-only): List the caller's contacts (name, email, phone, birthday, relationship, how often to see them), pinned first, then by name. - countdowns_byId (read-only): Get one of the caller's countdowns by id, or null. - countdowns_mine (read-only): List the caller's countdowns (upcoming, yearly and past), by date. - dumpItems_byId (read-only): Get one of the caller's dump items by id, or null. - dumpItems_mine (read-only): List everything the caller dumped (links, notes, images, quotes), archived ones included, newest first. - financeCards_byId (read-only): Get one of the caller's payment cards by id, or null. - financeCards_mine (read-only): List the caller's payment cards (name, brand, debit/credit, last four digits, currency), by name. - financeSubscriptions_byId (read-only): Get one of the caller's subscriptions by id, or null. - financeSubscriptions_mine (read-only): List the caller's recurring subscriptions (amount, currency, billing cycle monthly/annual/custom, status, start and end days, card, reminder), by name. - goalMilestones_byId (read-only): Get one of the caller's goal milestones by id, or null. - goalMilestones_mine (read-only): List the caller's goal milestones, optionally of one goal, in goal order. - goals_byId (read-only): Get one of the caller's goals by id, or null. - goals_mine (read-only): List the caller's goals (done ones included), soonest due date first, then newest. - goalTrackerEntries_byId (read-only): Get one of the caller's goal tracker entries by id, or null. - goalTrackerEntries_forTracker (read-only): List one goal tracker's logged values, newest day first. - goalTrackers_byId (read-only): Get one of the caller's goal trackers by id, or null. - goalTrackers_mine (read-only): List the caller's goal trackers (numbers or ratings logged over time), optionally of one goal, oldest first. - habitCompletions_forDay (read-only): List the logs (done, skipped, notCompleted) the caller has for one habit on one day (YYYY-MM-DD), oldest first; empty when nothing is logged. The day is complete once its done logs reach the habit's dailyTarget. - habitCompletions_range (read-only): List the caller's habit logs (done, skipped, notCompleted) between two days (YYYY-MM-DD, inclusive), by day, oldest first. A habit can have several logs a day. - habitLists_byId (read-only): Get one of the caller's habit lists by id, or null. - habitLists_mine (read-only): List the caller's habit lists by position, then name. A list can sit inside another (parentListId). - habits_byId (read-only): Get one of the caller's habits by id, or null. - habits_mine (read-only): List the caller's habits (paused ones included) by position, then name. - habitTags_byId (read-only): Get one of the caller's habit tags by id, or null. - habitTags_mine (read-only): List the caller's habit tags (separate from todo tags) by position, then name. - hints_list (read-only): List the feature-discovery hints the caller dismissed, oldest first. A hint not listed is still showing. - ingredientLists_byId (read-only): Get one of the caller's ingredient lists by id, or null. - ingredientLists_mine (read-only): List the caller's ingredient lists (stores or groups of ingredients) by name. - ingredients_byId (read-only): Get one of the caller's ingredients by id, or null. - ingredients_mine (read-only): List the caller's ingredients by name, with shopping status (to_buy is the shopping list), aisle category and the amount to buy. - lifeLogs_byId (read-only): Get one of the caller's life-log entries by id, or null. - lifeLogs_mine (read-only): List the caller's life-log entries, newest first. Optional filters: from/to (epoch ms, inclusive) on startAt, and activityId, contactId or locationId to get one entity's history; limit defaults to 200. - locations_byId (read-only): Get one of the caller's locations by id, or null. - locations_mine (read-only): List the caller's locations (name, address, coordinates, parent location), by name. - mealPlans_byId (read-only): Get one of the caller's meal plans by id, or null. - mealPlans_mine (read-only): List the caller's meal plans (named groups of planned meals) by name. - medicationLogs_byId (read-only): Get one of the caller's medication logs by id, or null. - medicationLogs_range (read-only): List the caller's medication logs (taken, skipped or missed doses), newest first, between two local days (YYYY-MM-DD, inclusive, both optional); pass medicationId for one medication's. - medicationPrescriptions_byId (read-only): Get one of the caller's medication prescriptions by id, or null. - medicationPrescriptions_mine (read-only): List the caller's medication prescriptions, newest start date first; pass medicationId for one medication's. - medicationRequirements_byId (read-only): Get one of the caller's dose requirements by id, or null. - medicationRequirements_mine (read-only): List the caller's dose requirements (the doses each prescription asks for every day), by prescription and position; pass prescriptionId for one prescription's. - medications_byId (read-only): Get one of the caller's medications by id, or null. - medications_mine (read-only): List the caller's medications by name. - noteFolders_byId (read-only): Get one of the caller's note folders by id, or null. - noteFolders_mine (read-only): List the caller's note folders and the ones shared with them (nested through parentFolderId), in sidebar order. - notes_byId (read-only): Get one of the caller's notes by id, with its markdown content, or null. - notes_mine (read-only): List the caller's notes and those in folders shared with them (title, markdown content, folder, pinned), in sidebar order. - packingActivities_byId (read-only): Get one of the caller's packing activities by id, or null. - packingActivities_mine (read-only): List the caller's packing activities (Beach, Hiking…) by name. - packingItems_byId (read-only): Get one of the caller's packing items by id, or null. - packingItems_mine (read-only): List the caller's packing library items by name, with their activities, quantity rules and flags. - plannedMeals_byId (read-only): Get one of the caller's planned meals by id, or null. - plannedMeals_mine (read-only): List the caller's planned meals (day, slot, recipe, servings), optionally between two YYYY-MM-DD days inclusive, by day and slot order. - plannerBlockTodos_forEvent (read-only): List the todos one of the caller's time blocks holds (planner event id), in order, skipping trashed ones. Rows name the todo by todoId. - plannerEvents_byId (read-only): Get one of the caller's planner events by id, or null. - plannerEvents_range (read-only): List the caller's planner events (and those in planner lists shared with them) that touch [from, to) (epoch ms), plus every recurring series (expand its rrule to get the occurrences), ordered by start. - plannerLists_byId (read-only): Get one of the caller's planner lists by id, or null. - plannerLists_mine (read-only): List the caller's planner lists (calendars), and the ones shared with them, in order. - pomodoros_byId (read-only): Get one of the caller's pomodoros by id, or null. - pomodoros_mine (read-only): List the caller's pomodoros (focus sessions and breaks), newest first; from/to (epoch ms, to exclusive) limit them by start time. - pomodoros_running (read-only): Get the caller's running pomodoro (started, not ended; possibly paused), or null. - pomodoros_stats (read-only): Focus minutes and completed focus sessions of the caller's pomodoros started between from and to (epoch ms, to exclusive). Cancelled sessions and breaks don't count. - problemLogs_byId (read-only): Get one of the caller's logged problem occurrences by id, or null. - problemLogs_mine (read-only): List the caller's logged problem occurrences, latest day first; pass problemId for one problem's history. - problems_byId (read-only): Get one of the caller's problems by id, or null. - problems_mine (read-only): List the caller's problems (recurring annoyances, active and resolved), newest first. - projects_byId (read-only): Get one of the caller's projects by id, or null. - projects_mine (read-only): List the caller's projects and the ones shared with them by name. - recipeBooks_byId (read-only): Get one of the caller's recipe books by id, or null. - recipeBooks_mine (read-only): List the caller's recipe books, and the ones shared with them, by position. Every one of the caller's recipes sits in one of them. - recipeIngredients_byId (read-only): Get one of the caller's recipe ingredient lines by id, or null. - recipeIngredients_mine (read-only): List the caller's recipe ingredient lines (quantity, unit, ingredient), optionally of one recipe, in recipe order. - recipes_byId (read-only): Get one of the caller's recipes by id, or null. - recipes_mine (read-only): List the caller's recipes (and those in recipe books shared with them) by name (without their ingredient lines; see recipeIngredients.mine). - routineItems_byId (read-only): Get one of the caller's routine steps by id, or null. - routineItems_mine (read-only): List the caller's routine steps in play order, optionally only one routine's. - routineLists_byId (read-only): Get one of the caller's routine lists by id, or null. - routineLists_mine (read-only): List the caller's routine lists by position, then name. A list can sit inside another (parentListId). - routineRuns_byId (read-only): Get one of the caller's routine runs by id, or null. - routineRuns_mine (read-only): List the caller's routine runs, newest first, optionally only one routine's or one day's (YYYY-MM-DD). - routines_byId (read-only): Get one of the caller's routines by id, or null. - routines_mine (read-only): List the caller's routines, oldest first. - sections_byId (read-only): Get one of the caller's sections by id, or null. - sections_mine (read-only): List the caller's sections (of projects and lists) in order. - shareInvites_byId (read-only): Get one share invite the caller sent or received, or null. - shareInvites_mine (read-only): List the caller's share invites: the ones they sent (fromUserId is the caller) and the ones waiting for their answer (toUserId is the caller; declined ones have rejected true), newest first. - shares_byId (read-only): Get one share the caller owns or received, or null. - shares_forEntity (read-only): List who one of the caller's own entities (kind + entityId) is shared with. - shares_mine (read-only): List every accepted share the caller is part of: entities they shared with others (ownerId is the caller) and entities shared with them (userId is the caller), with each side's name, avatar and role. - shopping_preview (read-only): Preview the shopping list the meals planned between two YYYY-MM-DD days (inclusive) need: one line per ingredient and unit, recipe quantities scaled by planned servings, sorted by aisle. Changes nothing; shopping.addMany puts lines on the list. - stays_byId (read-only): Get one of the caller's stays by id, or null. - stays_mine (read-only): List the caller's stays by check-in day, optionally for one trip (tripId). - tags_byId (read-only): Get one of the caller's tags by id, or null. - tags_groupById (read-only): Get one of the caller's tag groups by id, or null. - tags_groups (read-only): List the caller's tag groups by name. - tags_mine (read-only): List the caller's tags by name. - todoLists_byId (read-only): Get one of the caller's todo lists by id, or null. - todoLists_mine (read-only): List the caller's todo lists and the ones shared with them by name. - todos_archived (read-only): List the caller's archived todos that aren't in the trash, newest first. - todos_byId (read-only): Get one of the caller's todos by id, or null. - todos_mine (read-only): List the caller's active and paused todos that aren't in the trash, newest first. - todos_trash (read-only): List the caller's trashed todos, most recently deleted first. - tracker_byId (read-only): Get one of the caller's tracker items by id, or null. - tracker_mine (read-only): List the caller's tracker items (movies, shows, books, video games, board games), optionally of one kind, in shelf order. - transports_byId (read-only): Get one of the caller's transports by id, or null. - transports_mine (read-only): List the caller's transports by departure, optionally for one trip (tripId). - tripPacking_byId (read-only): Get one row of a trip's packing checklist by id, or null. - tripPacking_mine (read-only): List the rows of the caller's trip packing checklists (status and double-check per packing item), optionally for one trip (tripId). - trips_byId (read-only): Get one of the caller's trips by id, or null. - trips_mine (read-only): List the caller's trips by start day (undated last), then name. - users_me (read-only): Get the caller's own profile: name, email, username, bio, timezone, role, onboarding state, raw preferences, and the avatar and cover images (each with its key: the public URL, or an UploadThing file key on older images). Null when the user no longer exists. - views_byId (read-only): Get one of the caller's saved todo views by id, or null. - views_mine (read-only): List the caller's saved todo views (each a filter-language query), in sidebar order. - wishlist_byId (read-only): Get one of the caller's wishlist items by id, or null. - wishlist_mine (read-only): List the caller's wishlist items (and those in wishlist lists shared with them), by status column (thinking, want, searching, ordered, arrived) and position. - wishlistLists_byId (read-only): Get one of the caller's wishlist lists by id, or null. - wishlistLists_mine (read-only): List the caller's wishlist lists, and the ones shared with them, by position. Every one of the caller's wishlist items sits in one of them. ## MCP tools (write) - activities_create: Add an activity (type personal, work or both; defaults to personal) and return it. dayInterval makes it due again that many days after its last log. - activities_remove: Delete an activity; life-log entries keep everything else they hold. - activities_update: Change an activity's name, emoji, type, day interval or pinned state, and return it. - admin_envVars: Admins only: list the deployment environment variables (Coolify, Vercel, Railway, Render, PORT, HOST, SOURCE_COMMIT), null when unset. - affirmations_create: Add an affirmation (optional category; in Today's daily rotation by default, not a favorite) and return it. - affirmations_remove: Delete an affirmation. - affirmations_update: Change an affirmation's text, category, favorite or showOnToday, and return it. - ai_engines: List every AI feature (emoji, captureType, captureFields, linkUnfurl, chat, dumpClassify) with the engine it runs on for the caller: Jev, a model as :, or null with the reason. Follows the aiFeatureModel preferences. Changes nothing. - ai_guessEmoji: Guess one emoji for a name or title with the engine the caller picked for emoji suggestions (Jev or a model; Auto prefers Jev). Returns the emoji and the engine, or null when none is set up. Changes nothing. - aiEndpoints_create: Add a custom OpenAI-compatible AI endpoint (OpenRouter, Groq, Ollama, LM Studio, vLLM, LiteLLM, a gateway…) with its auth, stored encrypted. Returns it without secrets. - aiEndpoints_list: List the caller's custom OpenAI-compatible AI endpoints: name, base URL, auth type and header names, never secret values. - aiEndpoints_models: List the chat models a custom AI endpoint offers: the ids its GET /models lists (cached for a few minutes) plus the ones added by hand. - aiEndpoints_remove: Delete a custom AI endpoint and its stored auth. - aiEndpoints_test: Call GET {baseURL}/models on a custom AI endpoint (a stored one by id, with any given fields applied on top, or an unsaved one) and return the model ids or the error. Changes nothing. - aiEndpoints_update: Change a custom AI endpoint. Omitted fields, and omitted secret values (token, header value, password), keep what is stored. Returns it without secrets. - aiProviders_clearKey: Delete the caller's stored API key for an AI provider. - aiProviders_list: List every AI provider with whether the caller enabled it and stored a key (only the key's last 4 characters). - aiProviders_models: List the chat models an AI provider currently offers the caller, fetched from the provider with their stored key (cached for a few minutes). Empty without a key. - aiProviders_setEnabled: Turn an AI provider on or off for the caller's chats. - aiProviders_setKey: Store the caller's API key for an AI provider, encrypted, replacing any previous key. Returns its last 4 characters. - apiKeys_create: Create an API key for the caller (expiresIn in seconds, null never expires). Returns the record with the full `key`, which is shown only this once. - apiKeys_delete: Delete one of the caller's API keys; requests using it fail from then on. - apiKeys_get: Get one of the caller's API keys by id, without the secret. - apiKeys_list: List the caller's API keys, newest first, without the secrets. - apiKeys_update: Rename, enable or disable, re-expire or re-tag one of the caller's API keys, and return it. - auth_changePassword: Change the caller's password (8-128 characters, confirmed) after checking the current one, and sign out every other session. - billing_state: Get the caller's billing state from Polar: active subscriptions, granted benefits, and isPro (holds the Pro benefit). When billing is off it answers id "noop" with nothing active. - capture_classify: Read one quick-capture line ("dentist tomorrow 3pm at Main St 1h", "buy milk", a link) and guess what it should become: up to four candidates (todo, event, habit, routine, wishlist, tracker, dump or note), best first, each with a 0..1 confidence, a title, parsed fields (days in the caller's time zone) and 1-10 suggestions of the caller's own projects, lists, tags and places (8+ are already in the fields). Uses the engines the caller picked for the captureType and captureFields AI features (auto: Jev for the type, their model for the fields), else a local parser; `issues` says which of them failed. Creates nothing. - chats_create: Start a chat and return it. Defaults: title 'New chat', intelligence 'standard'. - chats_createFolder: Create a chat folder at the end of the caller's folder list and return it. - chats_deleteFolder: Delete a chat folder. Its chats are kept and move out of the folder. - chats_moveToFolder: Move a chat into one of the caller's folders, or out of any folder with null, and return it. - chats_remove: Delete a chat and all of its messages permanently. - chats_rename: Rename a chat and return it. - chats_renameFolder: Rename a chat folder and return it. - chats_setPinned: Pin a chat to the top of the list, or unpin it, and return it. - chats_updateSettings: Change a chat's AI provider, model or intelligence level (only the fields given), and return it. - checkinAnswers_remove: Clear a check-in answer. - checkinAnswers_set: Answer a check-in question for a day (YYYY-MM-DD): valueNumber for scale (1–10), mood (1–5), yesNo (0/1) and number questions, valueText for text ones. Replaces that day's earlier answer. - checkinCompletions_complete: Mark a check-in template done for a day (YYYY-MM-DD) with an optional markdown reflection note, and return it. Completing an already finished day updates its note. - checkinCompletions_remove: Reopen a finished check-in: the day no longer counts as done. Its answers stay. - checkinCompletions_update: Change a finished check-in's markdown reflection note, and return it. - checkinQuestions_create: Add a question to a check-in template (answerType scale 1–10, mood 1–5, yesNo, number with optional unit, or text) and return it. Without sortOrder it goes last. - checkinQuestions_remove: Delete a check-in question and every answer given to it. - checkinQuestions_update: Change a check-in question's prompt, unit or position, and return it. Its answer type can only change while it has no answers. - checkinTemplates_create: Create a check-in template (a set of daily questions; slot morning/evening/anytime, active and remind default on) and return it. Without sortOrder it goes last. - checkinTemplates_remove: Delete a check-in template with its questions, answers and finished days. - checkinTemplates_update: Change a check-in template's name, emoji, slot, active (paused when false), remind or position, and return it. - checklistItems_create: Add an item to a checklist, optionally inside one of its sections (sectionId) and with a note, and return it. Without sortOrder it goes last. - checklistItems_move: Move a checklist item into one of its checklist's sections (or out of any with sectionId null) at a position among its new siblings, and return it. - checklistItems_remove: Delete a checklist item. - checklistItems_update: Change a checklist item's text or note, and return it. - checklistLists_create: Create a checklist list (name, optional emoji; last unless sortOrder is given) and return it. - checklistLists_remove: Delete a checklist list. Its checklists move into moveToId (one of the caller's other checklist lists), or the first other one; the caller's last checklist list can't be deleted. - checklistLists_update: Rename a checklist list, change its emoji or position, and return it. - checklistRuns_finish: Finish a checklist run, whatever is checked; it moves to the history. Returns the run. - checklistRuns_remove: Delete a checklist run (discard it, or drop it from the history). The checklists stay. - checklistRuns_rename: Rename a checklist run, and return it. - checklistRuns_reopen: Put a finished checklist run back in progress, keeping its checks. Returns the run. - checklistRuns_reset: Start a checklist run over: uncheck every item, reopen it and restart its clock. Returns the run. - checklistRuns_setItem: Check an item off in a checklist run (checked true) or uncheck it (false); the item must belong to one of the run's checklists. Returns the run. - checklistRuns_start: Start a run through one or more of the caller's checklists (or ones shared with them) together (checklistIds, in display order) with nothing checked, and return it. - checklists_create: Create a checklist in a checklist list (checklistListId; the caller's first list when omitted): name, optional emoji and markdown description) and return it. Without sortOrder it goes last. - checklists_remove: Delete a checklist with its sections and items. Runs that included it stay, without its items. - checklists_update: Rename a checklist, change its emoji, markdown description or position, or move it to another checklist list, and return it. - checklistSections_create: Add a named section (a group of items) to a checklist and return it. Without sortOrder it goes last. - checklistSections_remove: Delete a checklist section. Its items stay in the checklist, without a section. - checklistSections_update: Rename a checklist section or change its position, and return it. - connections_disconnect: Disconnect a connected account: revokes the app's access at the provider and deletes the stored tokens. - connections_googleCalendars: List the calendars in the caller's connected Google account (id, name, whether it is the primary one, access role, color). Fails when Google Calendar is not connected. - connections_googleEvents: List the events overlapping [from, to) (epoch ms, at most 100 days) in the caller's connected Google calendars, recurring events expanded; calendarIds limits it to those calendars (default: all). Read-only. Fails when Google Calendar is not connected. - connections_list: List the third-party accounts the caller can connect (Google Calendar) with whether each is connected, to which account email, and since when (epoch ms). - connections_startGoogleCalendar: Start connecting the caller's Google Calendar. Returns the Google consent URL to open in a browser; Google redirects back to the app, which stores the connection. - contacts_create: Add a contact (relationship defaults to Friend) and return it. dayInterval is how often, in days, the caller wants to see them; birthday is YYYY-MM-DD. - contacts_remove: Delete a contact; life-log entries keep everything else they hold. - contacts_update: Change a contact's name, email, phone, avatar, birthday, address, relationship, day interval or pinned state, and return it. - countdowns_create: Add a countdown to a day (YYYY-MM-DD; yearly repeats it every year, like a birthday; shown on Today by default) and return it. - countdowns_remove: Delete a countdown. - countdowns_update: Change a countdown's title, emoji, date, yearly, showOnToday, done or notes, and return it. - dump_unfurl: Fetch a public web page and return its title, description, preview image, favicon and site name (OpenGraph, Twitter and meta tags). Changes nothing. - dumpItems_create: Dump something (a link, note, image or quote) and return it. Labels (autoTags) are derived from its url and metadata. - dumpItems_remove: Delete a dump item for good. Its uploaded image, if any, stays in the caller's uploads. - dumpItems_update: Change a dump item's text, link details, image colors, notes, tags, pinned or archived state, and return it. - finance_exchangeRates: Get the latest reference exchange rates (European Central Bank, via Frankfurter) from a base currency (ISO 4217, default EUR): units of each currency per one unit of the base, and the day they were published. Changes nothing; cached for an hour. - financeCards_create: Add a payment card (brand defaults to other, kind to debit) and return it. - financeCards_remove: Delete a payment card; subscriptions charged to it stay, without a card. - financeCards_update: Change a payment card's name, emoji, brand, kind, last four digits, currency or color, and return it. - financeSubscriptions_create: Add a recurring subscription (amount in currency, billed monthly, annual, or every intervalDays when custom, from startDate YYYY-MM-DD; billingCycle defaults to monthly, status to active, category to personal) and return it. - financeSubscriptions_remove: Delete a subscription. - financeSubscriptions_update: Change a subscription's name, emoji, color, amount, currency, billing cycle, interval, status (active, paused, cancelled), category, card, start/end days, reminder days, link or notes, and return it. - glink_changelogs: List the app's published changelogs, newest first, each marked seen or unseen by the caller. - glink_comment: Reply on one of the caller's feedback reports, optionally with uploaded attachments. - glink_createUpload: Start an attachment upload (image up to 10 MiB, video up to 100 MiB): returns an imageId and a URL to PUT the file to within 10 minutes. - glink_markChangelogsSeen: Mark changelogs as seen by the caller: the given ids, or every published one when ids is omitted. - glink_report: Get one of the caller's feedback reports with its comments and attachments, and mark its replies as read. - glink_reports: List the caller's feedback reports, newest activity first, each flagged unread when there's a reply they haven't seen. - glink_setClosed: Close or reopen one of the caller's feedback reports. - glink_status: Whether in-app feedback is available to the caller: enabled for this app and their email verified. - glink_submit: Send a bug report or feedback to the app's team, privately, with optional uploaded attachments and app context (version, platform, route). - goalMilestones_create: Add a milestone to one of the caller's goals and return it. It goes after the goal's last milestone unless sortOrder is given. - goalMilestones_remove: Delete a milestone for good. Its trackers move up to the milestone's goal. - goalMilestones_reorder: Put a goal's milestones in the given order; milestoneIds must list every milestone of the goal exactly once. - goalMilestones_update: Rename a milestone, change its emoji, due date or position, or check it off (done); returns it. - goals_create: Create a goal (name, emoji, description, due date YYYY-MM-DD, done) and return it. - goals_remove: Delete a goal and its milestones for good. Its trackers stay, no longer on a goal. - goals_update: Rename a goal, change its emoji, description or due date, or mark it done or active; returns it. - goalTrackerEntries_create: Log a value for one of the caller's goal trackers on a day (YYYY-MM-DD), with an optional note, and return the entry. Idempotent by id. - goalTrackerEntries_remove: Delete one logged tracker value for good. - goalTrackerEntries_update: Change a logged tracker value, its day or its note; returns the entry. - goalTrackers_create: Create a goal tracker and return it: a number counted towards targetValue (latest entry, or the sum of entries when isCumulative) or a rating between minRating and maxRating. It can stand alone or sit on a goal or one of its milestones. - goalTrackers_remove: Delete a goal tracker and every value logged for it, for good. - goalTrackers_update: Change a goal tracker's name, type, target, unit, rating scale, display, or the goal or milestone it sits on; returns it. - habitCompletions_log: Append one log (done, skipped or notCompleted) to a habit's day (YYYY-MM-DD), keeping earlier logs. A day is complete once its done logs reach the habit's dailyTarget. Each done log earns the habit's points, a failed one loses its penalty. Idempotent by id; returns the day's logs. - habitCompletions_remove: Delete one habit log by id, leaving the day's other logs. - habitCompletions_set: Set a habit's whole day (YYYY-MM-DD) to one outcome: done, skipped or notCompleted, or null to clear the day. Replaces every earlier log for that day; done writes as many done logs as the habit's dailyTarget so the day is complete. Prices points from the habit and returns the day's logs. - habitCompletions_setMany: Set many habit days (YYYY-MM-DD) to one outcome at once, all or nothing: done, skipped or notCompleted, or null to clear those days. Each day is replaced as habitCompletions.set does (done fills the day to the habit's dailyTarget); an entry's optional id names that day's first log. - habitLists_create: Create a habit list and return it. A list can sit inside another list. - habitLists_remove: Delete a habit list. Its habits stay, without a list; its child lists move to the top level. - habitLists_update: Rename, move or reorder a habit list, or hide or show its habits on the all-habits page; returns it. - habits_create: Create a habit and return it. It is due every day unless daysOfWeek names weekdays; a day is complete once dailyTarget (default 1) done logs are in. Each done log earns its points (default 3), a failed one loses punishingPoints. tagIds are habit tags (habitTags), not todo tags. - habits_duplicate: Copy one of the caller's habits (not its logged days) as a new, unpaused habit with the given id, and return the copy. - habits_remove: Delete a habit and every day logged for it. - habits_update: Change a habit's name, schedule, points, list, habit tags, paused state or other fields, and return it. - habitTags_create: Create a habit tag (separate from todo tags) and return it. Habits list their habit tags in tagIds. - habitTags_remove: Delete a habit tag and take it off every habit that had it. - habitTags_update: Rename a habit tag, change its emoji, color or position, or hide or show its habits on the all-habits page; returns it. - hints_dismiss: Dismiss a feature-discovery hint for the caller, on every device, and return the caller's dismissed hints. Dismissing twice changes nothing. - ingredientLists_create: Create an ingredient list (a store or a group such as Pantry) and return it. - ingredientLists_remove: Delete an ingredient list; its ingredients stay, in no list. - ingredientLists_update: Rename an ingredient list, change its emoji, or hide or show its items on the shopping list; returns it. - ingredients_create: Create an ingredient and return it. Status defaults to to_buy, which puts it on the shopping list. - ingredients_remove: Delete an ingredient and every recipe line that uses it. - ingredients_update: Change an ingredient's name, emoji, aisle, list, staple flag, default unit or status (in_stock marks it bought) and return it. Leaving to_buy clears the amount to buy. - jev_connect: Store the caller's Jev connection, encrypted: the provider (OpenRouter, Vercel AI Gateway or TypeSafe AI), its API key and optionally a model id. Replaces any previous one. - jev_disconnect: Delete the caller's stored Jev connection. - jev_status: Show whether the caller connected Jev (TypeSafe AI's evaluation model), through which provider and model, and the key's last 4 characters. - jev_suggestEmoji: Ask the caller's Jev connection for one emoji that fits a name or title. Returns null when Jev is not connected. - jev_test: Send Jev a sample emoji question to check a connection works: the given provider, key and model, or the stored connection when they are omitted. Returns the picked emoji and how long it took. - lifeLogs_create: Log something in the life log and return it: a mix of activityIds, contactIds and locationIds (at least one, or a note), at startAt (epoch ms, defaults to now), with an optional durationSeconds and markdown note. - lifeLogs_remove: Delete a life-log entry. - lifeLogs_update: Change a life-log entry's activities, contacts, locations, time, duration or note (id arrays replace the old ones), and return it. - links_unfurl: Read a public web link (IMDb, Letterboxd, Goodreads, Steam, BoardGameGeek, Amazon, any page) and return its metadata: kind (movie, tv, book, video_game, board_game, product, article, other), title, cover image, year, creators, genres, rating, price and external ids. Changes nothing; results are cached for 10 minutes. - locations_create: Add a location (address, optional latitude/longitude, optionally inside a parent location) and return it. - locations_remove: Delete a location; locations inside it move to the top level and life-log entries keep everything else they hold. - locations_update: Change a location's name, emoji, address, note, coordinates or parent location, and return it. - mealPlans_create: Create a meal plan (a named group of planned meals) and return it. - mealPlans_remove: Delete a meal plan; its planned meals stay, in no plan. - mealPlans_update: Rename a meal plan or change its emoji; returns it. - medicationLogs_create: Log a dose of one of the caller's medications as taken (default), skipped or missed at takenAt (epoch ms) on the caller's local day `date` (YYYY-MM-DD; the UTC day of takenAt when omitted). With requirementId it answers that dose requirement for the day and replaces any earlier log of it that day. Returns the log. - medicationLogs_remove: Delete a medication log (a dose requirement it answered is open again for that day). - medicationLogs_update: Change a medication log's status, dosage, notes, time (takenAt, epoch ms, with its local day `date`) or medication, and return it. - medicationPrescriptions_create: Add a prescription (a course of one of the caller's medications, from startDate until endDate or ongoing; days are YYYY-MM-DD) and return it. - medicationPrescriptions_remove: Delete a prescription and its dose requirements; logs already recorded stay. - medicationPrescriptions_update: Change a prescription's medication, dosage, prescription/start/end days (YYYY-MM-DD; endDate null means ongoing) or notes, and return it. - medicationRequirements_create: Add a dose requirement to one of the caller's prescriptions: a dose (dosage text) due every day the prescription is active, in a part of the day (default any) and optionally at an exact HH:MM. Returns it. - medicationRequirements_remove: Delete a dose requirement; logs already recorded against it stay. - medicationRequirements_update: Change a dose requirement's dosage, part of the day, exact time (HH:MM or null) or position, and return it. - medications_create: Add a medication (form defaults to pill, how to take it to any time) and return it. - medications_remove: Delete a medication with its prescriptions, their dose requirements and its logs. - medications_update: Change a medication's name, emoji, form, how to take it (with food, on an empty stomach…), short note or notes, and return it. - noteFolders_create: Create a note folder, at the top level or inside another folder, and return it. Without sortOrder it goes after its siblings. - noteFolders_move: Move a note folder into another folder (or to the top level with parentFolderId null) at a sort position among its new siblings, and return it. A folder can't move inside itself. - noteFolders_remove: Delete a note folder. contents "delete" also deletes every note and folder inside it, at any depth; "moveUp" moves its notes and subfolders into its parent folder. - noteFolders_update: Rename a note folder or change its emoji, and return it. - notes_create: Create a markdown note, at the top level or inside a folder, and return it. Without sortOrder it goes after its siblings. - notes_move: Move a note into a folder (or to the top level with folderId null) at a sort position among its new siblings, and return it. - notes_remove: Delete a note for good. - notes_update: Change a note's title, emoji, markdown content or pinned state, and return it. - packingActivities_create: Create a packing activity (a reusable reason to pack, e.g. Beach or Hiking) and return it. - packingActivities_remove: Delete a packing activity. Its items stay in the library without it, and trips stop listing it; checklists keep their rows. - packingActivities_update: Rename a packing activity or change its emoji or description, and return it. - packingItems_create: Add an item to the packing library and return it. Essential items go on every trip's list; the rest on trips with one of their activities. With tripId it also goes on that trip's checklist (an ad-hoc item). - packingItems_remove: Delete a packing item from the library and from every trip's checklist. - packingItems_update: Change a packing item's name, emoji, description, category, activities, quantity rules (defaultQuantity, quantityPerDay), flags (essential, expendable, needsCharging, needsToBeChecked), charging status or when it is packed, and return it. - plannedMeals_create: Plan a meal on a YYYY-MM-DD day and slot (breakfast, lunch, dinner, snack, dessert, other), usually from a recipe, and return it. Name, emoji, servings and slot default to the recipe's. - plannedMeals_move: Move a planned meal to another day and slot, at a position among that slot's meals, and return it. - plannedMeals_remove: Delete a planned meal. - plannedMeals_update: Change a planned meal's day, slot, servings, name, recipe or meal plan and return it. - plannerBlockTodos_add: Put one of the caller's todos into a time block (a planner event of type timeBlock), at sortOrder (the end when omitted). Adding a todo the block already holds does nothing. Returns the block's todos. - plannerBlockTodos_remove: Take a todo out of one of the caller's time blocks; the todo itself stays. Returns null. - plannerBlockTodos_reorder: Put a time block's todos in the given order; todoIds must list every live (not trashed) todo the block holds exactly once. Trashed todos keep their rows, placed after the live ones. Returns the block's todos. - plannerEvents_create: Create a planner event and return it. type 'regular' is a plain event; 'todo' schedules one of the caller's todos (todoId; the todo's planned day and duration follow the slot); 'timeBlock' is a focus block that can hold many todos (plannerBlockTodos.*); 'habit' (habitId) and 'routine' (routineId) slot one of the caller's habits or routines. rrule makes it recurring (not for todo slots). - plannerEvents_duplicate: Copy a planner event as a one-off with the same time and details (a time block with its todos); the copy's id is newId (generated when omitted). Returns null. - plannerEvents_moveOccurrence: Move or edit occurrences of a recurring planner event. onlyEvent: that occurrence becomes a standalone event (newId). allFuture: the series ends on untilDayKey and a new series (newId) continues from the new time. all: the whole series shifts by the same offset. A time block's copy keeps its todos. - plannerEvents_remove: Delete a planner event (a whole series, for a recurring one). Linked todos, habits and routines stay; a time block's todo list goes with it. - plannerEvents_removeOccurrence: Delete occurrences of a recurring planner event: the one starting at occurrenceStart (onlyEvent), it and every later one (allFuture: the series ends on untilDayKey), or the whole series (all). - plannerEvents_update: Change a planner event (every occurrence, for a recurring one) and return it. Only regular events and time blocks change title or details; a todo slot moving reschedules its todo. - plannerLists_create: Create a planner list (a calendar with a color that events are filed into) and return it. Visible in every view unless a showIn* flag says otherwise. - plannerLists_remove: Delete a planner list. Its events stay on the calendar, without a list. - plannerLists_update: Rename a planner list or change its emoji, color, order or the views it shows in, and return it. - pomodoros_finish: End the caller's running pomodoro at `at` (epoch ms, default now) as completed, skipped or cancelled; completed before its time ran out is recorded as skipped, and cancelled focus sessions don't count towards focus time. An ended one stays as it is. Returns it. - pomodoros_pause: Pause the caller's running pomodoro at `at` (epoch ms, default now); a paused or ended one stays as it is. Returns it. - pomodoros_remove: Delete one of the caller's pomodoros from the history. - pomodoros_resume: Resume the caller's paused pomodoro at `at` (epoch ms, default now); the pause doesn't count towards its time. Returns it. - pomodoros_start: Start a pomodoro: a focus session (kind work) or a break (shortBreak, longBreak) lasting durationMinutes, optionally for one of the caller's todos; cycle is which focus session of the cycle it belongs to (default 1). A session still running ends first (at its end time and completed if its time ran out, else skipped). followsId marks an automatic start after one of the caller's sessions: only one session can follow it, a repeat is a no-op, and so is a start after a session that a newer one already replaced. Returns the new session. - pomodoros_update: Change a pomodoro's linked todo (null unlinks) or notes, and return it. - problemLogs_create: Log that a problem happened on a day (YYYY-MM-DD), with an optional note, and return the log. - problemLogs_remove: Delete a logged problem occurrence. - problemLogs_update: Change a logged problem occurrence's day or note, and return it. - problems_create: Add a problem (a recurring annoyance; annoyingLevel defaults to notAnnoying, not resolved) and return it. - problems_remove: Delete a problem and every occurrence logged for it. - problems_update: Change a problem's name, emoji, description, annoyingLevel or done (resolved), and return it. - projects_create: Create a project with one section named "Default section" (id defaultSectionId, generated when omitted) and return it. - projects_remove: Delete a project and its sections. Its todos stay, without a project (in their list's first section when they have a list). - projects_update: Change a project's name, status (todo, inProgress, done), dates or other fields, and return it. - recipeBooks_create: Create a recipe book (name, optional emoji; last unless sortOrder is given) and return it. - recipeBooks_remove: Delete a recipe book. Its recipes move into moveToId (one of the caller's other recipe books), or the first other one; the caller's last recipe book can't be deleted. - recipeBooks_update: Rename a recipe book, change its emoji or position, and return it. - recipeIngredients_create: Add an ingredient line (quantity, unit, ingredient) to a recipe, last unless positioned, and return it. A new ingredientId with ingredientName creates that ingredient. - recipeIngredients_remove: Remove an ingredient line from its recipe (the ingredient itself stays). - recipeIngredients_update: Change a recipe line's ingredient, quantity, unit, note or position and return it. - recipes_create: Create a recipe in a recipe book (recipeBookId; the caller's first book when omitted) and return it. `ingredients` adds its ingredient lines in order; a line whose ingredientId is new needs ingredientName and creates that ingredient. - recipes_duplicate: Copy one of the caller's recipes with its ingredient lines as a new private recipe named " copy", and return it. lineIds names the copied lines in order. - recipes_remove: Delete a recipe and its ingredient lines; meals planned from it stay, without the recipe. - recipes_update: Change a recipe's fields (name, description, instructions markdown, servings, times, tags, source, image, bookmark, recipe book…) and return it. - routineItems_create: Add a step to a routine (at the end unless sortOrder is given), optionally with a duration in seconds or a linked habit, and return it. - routineItems_remove: Delete a step from its routine. - routineItems_reorder: Put a routine's steps in the given order; itemIds must list every step of the routine exactly once. - routineItems_update: Change a routine step's name, emoji, duration, linked habit or position, and return it. - routineLists_create: Create a routine list and return it. A list can sit inside another list. - routineLists_remove: Delete a routine list. Its routines stay, without a list; its child lists move to the top level. - routineLists_update: Rename, recolor, hide or show, move or reorder a routine list, and return it. - routineRuns_finish: End a run as done, skipped or failed, whatever steps are checked, and return it. - routineRuns_remove: Delete a run from a routine's history. The routine stays. - routineRuns_reset: Reopen a run and uncheck all of its steps, and return it. - routineRuns_start: Start a run of a routine on the caller's calendar day (YYYY-MM-DD) with no steps checked, and return it. - routineRuns_toggleItem: Check a step of a run off, or uncheck it. Checking the last open step finishes the run as done; unchecking reopens it. Returns the run. - routines_create: Create a routine (a named, ordered list of steps with a time of day and weekdays; no weekdays means every day), optionally in a routine list, and return it. - routines_remove: Delete a routine with its steps and its run history. - routines_update: Rename a routine or change its emoji, time of day, weekdays, paused state or routine list (routineListId, null for none), and return it. - sections_create: Create a section inside a project or a list (give exactly one of projectId, listId) and return it. - sections_remove: Delete a section. Its todos move to the first remaining section of the same project or list; the last section can't be deleted. - sections_update: Rename a section, change its emoji or position (sortOrder), and return it. - shareInvites_cancel: Withdraw a share invite the caller sent, or dismiss one sent to them. - shareInvites_create: Invite a user, by email or username, to one of the caller's shareable entities (kind + entityId) as a viewer or editor, and return the pending invite. Sharing a container shares everything inside it. Inviting someone again updates the role of the pending invite. - shareInvites_respond: Accept or decline a share invite sent to the caller. Accepting creates the share (id shareId, generated when omitted) and syncs the entity and everything inside it to the caller; declining keeps the invite as rejected. - shareInvites_setRole: Change the role (viewer or editor) of a pending invite the caller sent, and return it. - shares_remove: Stop sharing: the owner revokes someone's access, or the person it was shared with leaves. The entity stops syncing to them. - shares_setRole: Change the role (viewer or editor) of someone the caller shared an entity with, and return the share. - shopping_addMany: Put ingredients on the shopping list (status to_buy) with an amount each. An ingredient already on the list adds the amount when the unit matches and notes it otherwise; one off the list starts from this amount. - shopping_restockStaples: Put every staple (need always at home) that is running low or out of stock back on the shopping list. - stays_create: Add a stay (hotel, Airbnb…) to one of the caller's trips and return it. - stays_remove: Delete a stay. - stays_update: Change a stay's name, type, address, check-in/out, booked flag, link or notes, or move it to another trip (tripId), and return it. - tags_create: Create a tag and return it. Its points add to the score of every todo that has it. - tags_createGroup: Create a tag group and return it. - tags_remove: Delete a tag. Todos that had it stop counting its points. - tags_removeGroup: Delete a tag group. Its tags stay, without a group. - tags_update: Rename a tag, change its emoji, points or group, pause it or hide it from the overview, and return it. A paused or hidden tag keeps its todos out of the All overview. - tags_updateGroup: Rename a tag group or change its emoji, and return it. - todoLists_create: Create a todo list with one section named "Default section" (id defaultSectionId, generated when omitted) and return it. A list can sit inside another list. - todoLists_remove: Delete a todo list and its sections. Its todos stay, without a list (those without a project also leave their section); its child lists move up. - todoLists_update: Rename, pause, move or otherwise change a todo list, and return it. - todos_create: Create a todo and return it. The id is generated when omitted. A todo in a project or list goes in the given section of it, else its first section. - todos_export: Export the caller's active and paused todos as a Markdown checklist. - todos_plan: Set the day a todo is planned for (YYYY-MM-DD), or null to unplan it, and return it. - todos_remove: Move a todo to the trash. It leaves todos.mine and shows in todos.trash until restored. - todos_restore: Take a todo out of the trash, and return it. - todos_setDone: Mark a todo done or not done, and return it. - todos_setStatus: Pause, archive or reactivate a todo, and return it. Archived todos drop out of todos.mine. - todos_update: Change any of a todo's fields and return it. Omitted fields keep their value; title and description changes are kept in their history. A todo moved to another project or list goes in the given section of it, else its first section. - tracker_create: Add a movie, show, book, video game or board game to the tracker and return it. Status defaults to the kind's first status (want to watch, want to read, backlog, want); metadata fields are a snapshot of its link. - tracker_move: Move a tracker item to a position on its shelf, optionally into another status column, and return it. - tracker_remove: Delete a tracker item for good. - tracker_update: Change a tracker item's status, rating (0-10), notes, dates, kind or metadata snapshot, and return it. The status must belong to the (new) kind. - transports_create: Add a transport (flight, train, car…) to one of the caller's trips and return it. Departure and arrival are epoch ms. - transports_remove: Delete a transport. - transports_update: Change a transport's type, from/to, departure/arrival (epoch ms), seat, booking reference, link, booked flag or notes, or move it to another trip (tripId), and return it. - tripPacking_addActivity: Attach a packing activity to a trip and put that activity's items on its checklist. - tripPacking_remove: Take one item off a trip's checklist. The item stays in the library. - tripPacking_removeActivity: Detach a packing activity from a trip and drop its items from the checklist, except essential items and items with another of the trip's activities. - tripPacking_reset: Start a trip's packing from scratch: clear its whole checklist. - tripPacking_sync: Sync a trip's packing checklist with the library: add every essential item and every item with one of the trip's packing activities, and drop rows whose item no longer qualifies. Rows already there keep their status. - tripPacking_update: Set a checklist row's status (notPacked, packing, packed, skipped) or double-checked flag, and return it. - trips_create: Create a trip (name, emoji, destination, start/end day, markdown notes, packing activities) and return it. - trips_remove: Delete a trip with its stays, transports and packing checklist. Packing items and activities stay in the library. - trips_update: Change a trip's name, emoji, destination, days, notes, own-place/own-transport flags or packing activities, and return it. Changing activities does not change the packing checklist; tripPacking.sync does. - uploads_complete: Record a file PUT to a uploads.presign URL as one of the caller's uploaded images; returns its id (for avatar, cover or dump items) and public URL. Retrying with the same key returns the same image. - uploads_delete: Delete one of the caller's uploaded images from storage and the database; a profile using it as avatar or cover loses that image. - uploads_presign: Get a short-lived URL to PUT one file to storage (kinds: image 16 MB, avatar 4 MB, cover 8 MB, attachment 32 MB). Send the returned headers with the PUT, then call uploads.complete with the key. - users_markOnboarded: Mark the caller as onboarded and return the profile. - users_resendVerificationEmail: Send the caller a new email verification link (at most one a minute, five an hour), and return the updated limits. - users_resetOnboarding: Reset the caller's onboarding so the onboarding flow shows again, and return the profile. - users_setPreference: Set one preference and return the profile with its preferences. Booleans: notifications, sound, analytics, emailMarketing, emailUpdates, aiProviderEnabled, featureEnabled, pomodoroAutoStart, pomodoroSound, pomodoroNotify. Integers: plannerDayStartHour (0-23), plannerDayEndHour (1-24), plannerEventMinutes (15-480), plannerWeekStartsOn (0 = Sunday, 1 = Monday), pomodoroWorkMinutes (1-240), pomodoroShortBreakMinutes (1-60), pomodoroLongBreakMinutes (1-120), pomodoroLongBreakEvery (1-12). Strings: aiFeatureModel (emoji, captureType, captureFields, linkUnfurl, chat, dumpClassify) = "auto", "jev" (emoji, captureType, captureFields, dumpClassify only) or ":"; financeBaseCurrency = a 3-letter ISO currency code (default EUR). String arrays: featureOrder = feature ids in nav order (todos, habits, routines, goals, calendar, chat, wishlist, tracker, dump, notes, problems, meds, trips, life, food, checklists, countdowns, affirmations, finance, checkins, pomodoros), each at most once; missing ones follow in the default order. - users_updateProfile: Update the caller's name, username, bio, timezone and avatar/cover image (an uploaded image id, or null to remove it), and return the profile. Omitted fields keep their value; an empty username clears it. - users_verificationEmailStatus: Get whether the caller can request another verification email and when (ISO time); null when verification is off or the email is already verified. - views_create: Save a todo view (it shows in the sidebar under Views) and return it. A todo filter-language query: { filter, sort?, groupBy?, includeDone? }. The filter is and/or/not over conditions like {date:{field:'due',onOrBefore:'today'}}, {flag:'pinned'}, {priorityAtLeast:'medium'}, {tags:['work']}, {projects:['Launch']}, {type:['work']}, {text:'invoice'}, {pointsAtLeast:40}. Call views.preview to test one first. - views_language: The todo filter language views use: a guide with examples and its JSON Schema. Read this before writing a view. - views_preview: Run a filter-language query against the caller's todos without saving it: the matching todos (at most `limit`) and the total count. Use it to check a view before views.create. - views_remove: Delete a saved view. Its todos are untouched. - views_run: Run a saved view by id: its matching todos (at most `limit`) and the total count. - views_update: Rename a saved view or replace its query, and return it. A todo filter-language query: { filter, sort?, groupBy?, includeDone? }. The filter is and/or/not over conditions like {date:{field:'due',onOrBefore:'today'}}, {flag:'pinned'}, {priorityAtLeast:'medium'}, {tags:['work']}, {projects:['Launch']}, {type:['work']}, {text:'invoice'}, {pointsAtLeast:40}. Call views.preview to test one first. - wishlist_create: Add an item to a wishlist list (wishlistListId; the caller's first list when omitted; status defaults to thinking, placed last in its column) and return it. - wishlist_move: Move a wishlist item to a status column (thinking, want, searching, ordered, arrived) at a position (sortOrder; lower is higher up, fractions allowed), and return it. - wishlist_moveToList: Move a wishlist item into another wishlist list of the same owner that the caller may edit, and return it. - wishlist_remove: Delete a wishlist item. - wishlist_update: Change a wishlist item's name, emoji, image, link, price, currency or notes, and return it. - wishlistLists_create: Create a wishlist list (name, optional emoji; last unless sortOrder is given) and return it. - wishlistLists_remove: Delete a wishlist list. Its wishlist items move into moveToId (one of the caller's other wishlist lists), or the first other one; the caller's last wishlist list can't be deleted. - wishlistLists_update: Rename a wishlist list, change its emoji or position, and return it. ## Notes - MCP tool names are the REST method names with `.` replaced by `_` (`todos.create` is the tool `todos_create`). - Tool input schemas are served by the MCP `tools/list` method and match the OpenAPI request bodies.