Skip to content

Done Bear

by donebear.com · remote · no sign-in to list tools · v1.0.0 · published by com.donebear

Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.

Deletes · 6Changes · 5

17 tools: 6 can delete or cancel things, 5 change things and 6 only read.

Scanned Oct 21, 2026

17 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http donebear https://mcp.donebear.com/mcp

Findings

Matches of fixed checks, with the text they matched.

17 info
  • Infoguide

    The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
Show 11 more findings
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • Infosearch

    The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

17 tools

Deletes or cancels 6Claude Code: deny
  • attachmentAdd a file to a task or remove one.1 finding

    Why it is in this group

    • The description's first verb is "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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: ["attachments"]`. Limited to 10 attachments per task and 10 MB per file. Allowed types: images (jpeg, png, gif, webp, heic), PDF, CSV, Markdown, and plain text.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • checklistChange the checklist on a task.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 item's id and state, from task_show.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • commentWrite on a task's comment thread.1 finding

    Why it is in this group

    • The name "comment" says "comment": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 Trash — so confirm with the user first. Read the thread with task_show and `include: ["comments"]`.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • projectCreate or change a project.1 finding

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • task_archiveArchive a task, or several at once with `tasks` (max 50).1 finding

    Why it is in this group

    • The name "task_archive" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • task_editUpdate fields on one task (`task`) or on several at once (`tasks`, max 50).1 finding

    Why it is in this group

    • The name "task_edit" says "edit": a word for a change.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 tasks applies the same changes to every one of them and cannot be undone in one call, so confirm the list with the user first. For status changes use task_done, task_reopen or task_archive, and for checklist items use the available checklist tools; this tool does not change either.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 5Claude Code: ask
  • label_createCreate a new label in the workspace and return its id.1 finding

    Why it is in this group

    • The name "label_create" says "label": a word for a change.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • task_addCreate a new task.1 finding

    Why it is in this group

    • The name "task_add" says "add": a word for a change.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 commitment to today. `deadline` uses YYYY-MM-DD. Optionally assign the task, attach existing labels, or pass checklist item titles in `checklist`; their order is preserved. The result's `view` reports the selected start placement, while a due or overdue deadline can make the task appear in Today. To change an existing task, use task_edit for fields or the available checklist tools for items. Search first when the user may be describing an existing task.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • task_agent_registerExplicitly register one assignable task agent for this connection's existing key in one workspace, after the user approves that durable binding.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 fail without takeover or reactivation. Creates no key, changes no scope, and does not assign/import/start tasks.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • task_doneMark a task as complete, or several at once with `tasks` (max 50).1 finding

    Why it is in this group

    • The description's first verb is "mark": a word for a change.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • task_reopenReopen a completed task, or several at once with `tasks` (max 50).1 finding

    Why it is in this group

    • The name "task_reopen" says "reopen": a word for a change.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    Reopen a completed task, or several at once with `tasks` (max 50). Each returns to its previous view.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 6Claude Code: allow
  • get_contextGet a snapshot of the current workspace: task counts per view, recent open tasks, and every project, label, team and member.1 finding

    Why it is in this group

    • The name "get_context" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 task_show (one task): the recent tasks here are only the latest few.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • guideRead 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.1 finding

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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 and a start date. - `editing`: Changing a task's fields, clearing a value, appending to notes, or moving a task between projects. - `bulk`: Completing, moving, or editing more than one task at a time, or sweeping a whole view. - `checklists`: Adding sub-steps to a task, building a list inside a task, or ticking items off. - `comments`: Discussing a task with teammates: reading its thread, replying, or correcting a comment. - `projects`: Deciding where a task belongs, creating a project or label, changing a project's status, or joining/leaving a project. - `search`: Looking a task up, listing a view, paging through results, or orienting in a new workspace. - `workspaces`: Working across multiple workspaces, hitting a permission or rate-limit error, or making retries safe. - `agents`: Starting work in a Done Bear workspace for the first time. - `importing`: The user asks how to move their tasks in from Todoist, Things, Trello or a CSV.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • task_agent_getRead the task-agent identity bound to this connection's existing API key in one explicit workspace.1 finding

    Why it is in this group

    • The name "task_agent_get" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • task_listList tasks in the workspace, most recently updated first.1 finding

    Why it is in this group

    • The name "task_list" says "list": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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` tasks; `hasMore` is true when more matched than were returned, and passing `nextCursor` back as `cursor` reads the next page. To find a task by its words across every view use search instead, and task_show for one task's checklist, comments and files.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • task_showGet full details for a single task: its fields, labels and checklist items, by workspace-scoped task number.1 finding

    Why it is in this group

    • The name "task_show" says "show": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http donebear https://mcp.donebear.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__donebear__guide",
      "mcp__donebear__get_context",
      "mcp__donebear__task_list",
      "mcp__donebear__task_show",
      "mcp__donebear__task_agent_get",
      "mcp__donebear__search"
    ],
    "ask": [
      "mcp__donebear__task_add",
      "mcp__donebear__task_agent_register",
      "mcp__donebear__task_done",
      "mcp__donebear__task_reopen",
      "mcp__donebear__label_create"
    ],
    "deny": [
      "mcp__donebear__task_edit",
      "mcp__donebear__task_archive",
      "mcp__donebear__project",
      "mcp__donebear__checklist",
      "mcp__donebear__comment",
      "mcp__donebear__attachment"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as donebear. Review it before you use it.