Done Bear
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
| Endpoint | https://mcp.donebear.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.0.0 |
| Now | 17 tools · grade D (62) · pin ts_f5213d70fa5bd1b0d6d4164278e8f944 · protocol 2025-06-18 |
| First / last listed | 2026-10-25 08:36 UTC / 2026-10-25 08:36 UTC |
| Grade over time | 2026-10-25: D (62), 17 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: guide get_context task_list task_show task_add task_edit task_agent_get task_agent_register task_done task_reopen task_archive project search checklist comment attachment label_create
guide | Read Done Bear's guide for one topic: what the data means, how it relates to the rest of the product, and how to use it well. Load a topic before doing that kind of work for the first time in a session.
- `views`: Placing a task in Inbox/Today/Upcoming/Anytime/Someday, reading a view, or working out why Today looks wrong.
- `dates`: Setting or clearing a due date, or deciding between a deadline a params: topic*, context* |
get_context | Get a snapshot of the current workspace: task counts per view, recent open tasks, and every project, label, team and member. This is the tool that answers what is in the workspace and resolves a project, label, team or member by name — there is no separate list tool for those. Use it for that, not as a warm-up before every turn. For tasks themselves use task_list (a view), search (by words) or tas params: projects_status, tasks_limit, timezone, workspace, context* |
task_list | List tasks in the workspace, most recently updated first. Completed tasks are ordered by completion time, newest first. Filter by view (inbox, today, upcoming, anytime, someday, logbook, trash) and/or state (open, done, archived, all); `search` ranks matches within that filter. `view: "logbook"` reads completed tasks and `view: "trash"` archived ones, whatever `state` says. Returns up to `limit` t params: cursor, limit, search, state, timezone, view, workspace, context* |
task_show | Get full details for a single task: its fields, labels and checklist items, by workspace-scoped task number. Add `include` for the parts that cost extra reads: `["comments"]` for the discussion thread (oldest first, with author and whether each was edited) and `["attachments"]` for the files on it, each with a short-lived signed URL. params: include, task*, timezone, workspace, context* |
task_add | Create a new task. An explicit `when` selects its start placement: today, inbox, upcoming, anytime, or someday; upcoming schedules tomorrow. Without `when`, a `deadline` or omitted `timezone` selects anytime first. Otherwise, a `project` or `team` selects inbox; an unfiled task selects today. Pass the user's known IANA `timezone` to resolve calendar days. Use `when: "inbox"` for capture without a params: assignee, checklist, deadline, idempotency_key, labels, notes, project, team, timezone, title*, when, workspace, context* |
task_edit | Update fields on one task (`task`) or on several at once (`tasks`, max 50). Only the provided fields are changed; omitted fields are left untouched. To remove a value, list the field in `clear` (e.g. `clear: ["deadline"]`). Notes replace the existing notes (no append). `assignee` assigns the task; clear it to unassign. `add_labels` and `remove_labels` change which labels are on it. Editing several params: add_labels, remove_labels, workspace, task, tasks, assignee, clear, deadline, notes, project, team, timezone, title, when, context* |
task_agent_get | Read the task-agent identity bound to this connection's existing API key in one explicit workspace. Returns only key metadata and the exact agent UUID or null; an inactive agent includes disabledAt. Requires an API-key connection and current workspace membership. Does not register, assign or start any task. Use this before task_agent_register and retain key.id as expected_key_id. params: workspace_id*, context* |
task_agent_register | Explicitly register one assignable task agent for this connection's existing key in one workspace, after the user approves that durable binding. Requires a write-scoped API key restricted to exactly this workspace and an owner/admin membership. Read task_agent_get first and pass its key.id as expected_key_id. Same key/workspace/name retries return the same UUID; conflicting or inactive bindings fa params: expected_key_id*, name*, workspace_id*, context* |
task_done | Mark a task as complete, or several at once with `tasks` (max 50). They move to the Logbook view. A set of 50 is undone one task_reopen call at a time, so confirm the list with the user first. params: expectedRevision, workspace, task, tasks, context* |
task_reopen | Reopen a completed task, or several at once with `tasks` (max 50). Each returns to its previous view. params: workspace, task, tasks, context* |
task_archive | Archive a task, or several at once with `tasks` (max 50). They move to the Trash view, out of every working list, and stay readable there (task_list `view: "trash"`). Archiving is not completing: use task_done for work that was finished, and task_archive only for tasks the user wants gone. Confirm with the user first. params: workspace, task, tasks, context* |
project | Create or change a project. `action: "add"` creates one (name required). `action: "edit"` updates the named project: only the fields given change, and an empty string clears description or target_date. `action: "join"` puts it in the caller's Your projects sidebar list and `action: "leave"` takes it out. Read projects with get_context. params: action*, description, idempotency_key, name, project, status, target_date, workspace, context* |
search | Search tasks across the workspace. Ranked lexical search over title and description: exact and prefix matches rank first, then word-boundary, substring, and fuzzy matches, with recency and status factored in. Multi-word queries match in any order. Searches every state by default, completed and archived included. Use this when the user names a task by its words; use task_list to browse a view (Toda params: cursor, limit, query*, state, timezone, workspace, context* |
checklist | Change the checklist on a task. `action: "add"` appends items, unchecked, after the existing ones: pass every title for a multi-item list in one call (`titles` keeps the given order, while parallel single adds land in arrival order). `action: "edit"` renames an item and/or checks it (`completed: true`) or unchecks it (`completed: false`). `action: "remove"` deletes one. Read the list, with each it params: action*, completed, idempotency_key, item, task*, title, titles, workspace, context* |
comment | Write on a task's comment thread. `action: "add"` posts a comment, attributed to the connected user and visible to everyone in the workspace, so write it as a message to the user's teammates rather than a note to the user; nobody is notified. `action: "edit"` rewrites one of your own (only its author may, and it is then marked edited). `action: "remove"` deletes one permanently — comments have no params: action*, body, comment, idempotency_key, task*, workspace, context* |
attachment | Add a file to a task or remove one. `action: "add"` fetches the given HTTPS `url`: the server downloads it, verifies its size and type, and stores it, so the model never sends file bytes. Pass a stable idempotency_key and reuse it for retries so a lost response cannot upload the file twice. `action: "remove"` deletes the named `attachment`. Read a task's files with task_show and `include: ["attach params: action*, attachment, filename, idempotency_key, task*, url, workspace, context* |
label_create | Create a new label in the workspace and return its id. Only creates the label: to put it on a task, pass it to task_add `labels` or task_edit `add_labels` afterwards (both take the title). Titles are not unique, so a second call with the same title makes a duplicate — check the labels get_context returns first, and reuse one that already exists. params: idempotency_key, title*, workspace, context* |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.