Skip to content

Decknote

by decknote.app · remote · no sign-in to list tools · v1.0.0 · published by app.decknote

Kanban boards your AI agent can use: add, complete, move and recall tasks with your team.

Deletes · 126Final · 3Changes · 1

172 tools: 126 can delete or cancel things, 3 do something that can't be undone, 1 change things and 42 only read.

Scanned Oct 21, 2026

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

claude mcp add --transport http decknote https://decknote.app/api/v1/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

6 warn
  • The server marks "duplicate_list" destructive (destructiveHint: true), and its name says "list", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "duplicate_list" says "list": a word for reading.

    What this check looks for
  • The server marks "sort_list" destructive (destructiveHint: true), and its name says "list", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "sort_list" says "list": a word for reading.

    What this check looks for
  • The server marks "log_time" destructive (destructiveHint: true), and its name says "log", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "log_time" says "log": a word for reading.

    What this check looks for
  • The server marks "get_time_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_time_report" says "get": a word for reading.

    What this check looks for
  • The server marks "export_time_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "export_invoices_csv" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    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.

172 tools

Deletes or cancels 126Claude Code: deny
  • add_attachmentAttaches a link (url) or a file (contentBase64 + filename) to a task.No findings

    Why it is in this group

    • The name "add_attachment" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Attaches a link (url) or a file (contentBase64 + filename) to a task. Files follow the board owner's plan: 5 MB each and 100 MB per board on Free, 25 MB and 2 GB on Pro. Photos are optimized, as in the app.

    Annotations the server declares

    • title: Add attachment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • add_checklistAdds a checklist with its items to a task, in addition to its other checklists.No findings

    Why it is in this group

    • The name "add_checklist" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a checklist with its items to a task, in addition to its other checklists.

    Annotations the server declares

    • title: Add checklist
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • add_checklist_itemsAdds items at the end of a checklist.No findings

    Why it is in this group

    • The name "add_checklist_items" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds items at the end of a checklist.

    Annotations the server declares

    • title: Add checklist items
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • add_commentAdds a comment to a task as the user.No findings

    Why it is in this group

    • The name "add_comment" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a comment to a task as the user. By default nobody is notified. With notify: true it notifies @mentioned board members and the card's watchers by push and email, as commenting in the app does; that needs confirm: true, and without it the result is a preview of who would be notified.

    Annotations the server declares

    • title: Add comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • add_page_commentAdds a comment to a note or discussion (plain text, up to 5000 characters); the page moves up its list.No findings

    Why it is in this group

    • The name "add_page_comment" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a comment to a note or discussion (plain text, up to 5000 characters); the page moves up its list. Not on an archived page. Needs the editor role on the project.

    Annotations the server declares

    • title: Add page comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • add_reminderAdds a reminder for the user on a task: a push notification and an email at a chosen moment.No findings

    Why it is in this group

    • The name "add_reminder" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a reminder for the user on a task: a push notification and an email at a chosen moment. Either `at` (an ISO 8601 instant), or relative to the due date (`daysBefore` + local `time` + IANA `timeZone`), which follows the due date when it moves and repeats with repeating tasks.

    Annotations the server declares

    • title: Add reminder
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • api_createCreates something through Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with POST.No findings

    Why it is in this group

    • The name "api_create" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates something through Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with POST. Reachable: POST /api/v1/boards: a board: { title, template? }; POST /api/v1/cards: a card: { listId | boardId, title, description?, dueDate?, checklist?, reminders? }; POST /api/v1/boards/{boardId}/embeds: an embed of a board: { name, origins[], canEdit? } (owner, Pro). Takes a path on Decknote itself (not a full URL) and a JSON object body as documented there. Needs confirm: true; without it nothing is sent and the result is a preview of the request. Authentication, token, session, admin, payment and internal endpoints are not reachable, and secrets are removed from responses.

    Annotations the server declares

    • title: Create via Decknote API
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • archive_boardArchives a board the user owns: it leaves everyone's dashboard and keeps all its data until it is restored.No findings

    Why it is in this group

    • The name "archive_board" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archives a board the user owns: it leaves everyone's dashboard and keeps all its data until it is restored. Archived boards don't count toward the free plan's 5 owned boards.

    Annotations the server declares

    • title: Archive board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • archive_clientArchives a client: it leaves the active list and stops counting toward the plan's client limit.No findings

    Why it is in this group

    • The name "archive_client" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archives a client: it leaves the active list and stops counting toward the plan's client limit. Its projects keep the link and all the time stays. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Archive client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • archive_taskArchives a task: it leaves the board but keeps all its data and can be restored from the board's archive.No findings

    Why it is in this group

    • The name "archive_task" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archives a task: it leaves the board but keeps all its data and can be restored from the board's archive. Archiving a dated repeating task creates its next occurrence, as in the app.

    Annotations the server declares

    • title: Archive task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • bulk_tasksActs on up to 100 tasks of one board at once, like multi-select in the app: moves them to a list, adds a label, or archives them (repeating ones create their next occurrence).No findings

    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).
    Description, as the server wrote it
    Acts on up to 100 tasks of one board at once, like multi-select in the app: moves them to a list, adds a label, or archives them (repeating ones create their next occurrence).

    Annotations the server declares

    • title: Bulk update tasks
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • complete_taskMarks a task as completed (done).No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks a task as completed (done).

    Annotations the server declares

    • title: Complete task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • convert_estimate_to_invoiceTurns an accepted estimate into a draft invoice with the same lines, once while that invoice stands (after the invoice is voided or its draft deleted, the estimate can be turned in…No findings

    Why it is in this group

    • The name "convert_estimate_to_invoice" says "convert": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns an accepted estimate into a draft invoice with the same lines, once while that invoice stands (after the invoice is voided or its draft deleted, the estimate can be turned into a new one). Counts toward the free plan's 2 documents per month.

    Annotations the server declares

    • title: Convert estimate to invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_automationAdds a board rule: WHEN a card is added to a list / moved to a list / gets a label, THEN move it, add or remove a label, assign someone, set the due date N days ahead, archive it, …No findings

    Why it is in this group

    • The name "create_automation" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a board rule: WHEN a card is added to a list / moved to a list / gets a label, THEN move it, add or remove a label, assign someone, set the due date N days ahead, archive it, or comment. Triggers: card_added, card_moved, label_added (card_added/card_moved need triggerListId, label_added needs triggerLabelId). Actions: move_to_list, add_label, remove_label, assign, set_due, archive, comment (move_to_list needs actionListId; add_label/remove_label need actionLabelId; assign needs actionUserId; set_due needs actionDays; comment needs actionText). Free plan: 1 per board.

    Annotations the server declares

    • title: Create automation
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_boardCreates a new board owned by the user.No findings

    Why it is in this group

    • The name "create_board" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a new board owned by the user. `template` sets the initial lists and labels, in the user's language: blank (To do / In progress / Done), kanban, content or personal; `lists` replaces the template's list titles. Returns the board with its list ids. The free plan allows 5 owned boards.

    Annotations the server declares

    • title: Create board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_clientAdds a client.No findings

    Why it is in this group

    • The name "create_client" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a client. Projects are linked to a client in their settings; the client's currency and default hourly rate apply to their time. The free plan includes 2 active clients; Pro has no limit.

    Annotations the server declares

    • title: Create client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_custom_fieldAdds a custom field to a board's cards: text, number, select (with up to 20 options), checkbox or date.No findings

    Why it is in this group

    • The name "create_custom_field" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a custom field to a board's cards: text, number, select (with up to 20 options), checkbox or date. The free plan allows 3 per board.

    Annotations the server declares

    • title: Create custom field
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_embedLets another app of the user's show this board in an iframe (Pro, owner only): a name and up to 5 https origins allowed to frame it, read-only unless canEdit.No findings

    Why it is in this group

    • The name "create_embed" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Lets another app of the user's show this board in an iframe (Pro, owner only): a name and up to 5 https origins allowed to frame it, read-only unless canEdit. That app's server then requests a session through the REST API. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Create embed
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • create_expenseLogs an expense on a project: what was spent, the amount, the day, a category (travel, software, hardware, services, meals, other), the vendor, whether it can be billed to the clie…No findings

    Why it is in this group

    • The name "create_expense" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Logs an expense on a project: what was spent, the amount, the day, a category (travel, software, hardware, services, meals, other), the vendor, whether it can be billed to the client, and optionally a task. It records a cost; nothing is paid. Only the project owner can set a markup (a percentage added when billing it). Needs the editor role on the project.

    Annotations the server declares

    • title: Create expense
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_invoiceCreates a draft invoice or estimate, with its lines if given, copying the user's billing details and the chosen client onto it.No findings

    Why it is in this group

    • The name "create_invoice" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a draft invoice or estimate, with its lines if given, copying the user's billing details and the chosen client onto it. The draft is private: nothing is sent or published. It has no number until it is sent; sending takes the next one from the profile's counter. The free plan includes 2 invoices or estimates per calendar month (voided ones count); Pro has no limit. Needs the billing details to be set up.

    Annotations the server declares

    • title: Create invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_invoice_from_workCreates a draft invoice from a project's unbilled work (same options as the preview): the finished billable hours and billable expenses become lines and are tied to the invoice, so…No findings

    Why it is in this group

    • The name "create_invoice_from_work" says "create": a word for a change.
    • The input carries an amount (input.amount) and a currency, so it moves money.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a draft invoice from a project's unbilled work (same options as the preview): the finished billable hours and billable expenses become lines and are tied to the invoice, so they cannot be invoiced twice or edited until it is voided. The draft is private: nothing is sent. Counts toward the free plan's 2 documents per month. Only the project owner. Needs confirm: true and amount equal to the total of the preview; without them the result is that preview.

    Annotations the server declares

    • title: Create invoice from work
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_labelAdds a label to a board.No findings

    Why it is in this group

    • The name "create_label" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a label to a board. Colors: green, yellow, orange, red, purple, blue, sky, pink.

    Annotations the server declares

    • title: Create label
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_listAdds a list (column) to a board, at the end or, with first: true, before the other lists.No findings

    Why it is in this group

    • The name "create_list" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a list (column) to a board, at the end or, with first: true, before the other lists. Returns the new list with its id. Needs edit access to the board.

    Annotations the server declares

    • title: Create list
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_pageStarts a note (shared writing any editor can change) or a discussion (its text belongs to its author and the owner; editors answer with comments) in a project.No findings

    Why it is in this group

    • The name "create_page" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Starts a note (shared writing any editor can change) or a discussion (its text belongs to its author and the owner; editors answer with comments) in a project. The body is Markdown; links must be http, https, mailto, tel or of this site. Too much text is refused, not cut. Needs the editor role on the project.

    Annotations the server declares

    • title: Create page
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_projectCreates a new project: a board with the plain three-list layout and project settings (active), optionally for one of the user's clients.No findings

    Why it is in this group

    • The name "create_project" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a new project: a board with the plain three-list layout and project settings (active), optionally for one of the user's clients. Counts against the free plan's board limit like any board. To turn an existing board into a project, change its project settings.

    Annotations the server declares

    • title: Create project
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_project_from_templateCreates a new project from a starter or saved template: its lists, labels, tasks with estimates and checklists, and settings, with due dates shifted onto the start date (default to…No findings

    Why it is in this group

    • The name "create_project_from_template" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a new project from a starter or saved template: its lists, labels, tasks with estimates and checklists, and settings, with due dates shifted onto the start date (default today). The template is untouched. Optionally for one of the user's clients. Counts against the free plan's board limit like any board.

    Annotations the server declares

    • title: Create project from template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_sample_projectCreates a sample client, a sample project with a budget, six tasks with estimates and two weeks of hours, labelled as a sample in its name, so reports, the budget bar and the times…No findings

    Why it is in this group

    • The name "create_sample_project" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a sample client, a sample project with a budget, six tasks with estimates and two weeks of hours, labelled as a sample in its name, so reports, the budget bar and the timesheet have something to show. One at a time. Uses a board of the free plan's limit (and the sample client is left out if the client limit is full).

    Annotations the server declares

    • title: Create sample project
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_saved_viewSaves a personal view of a board: how to show it (board, table, calendar or timeline) and a filter (due date, labels, assignees).No findings

    Why it is in this group

    • The name "create_saved_view" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Saves a personal view of a board: how to show it (board, table, calendar or timeline) and a filter (due date, labels, assignees). Only the user sees it. The free plan allows 3 per board.

    Annotations the server declares

    • title: Create saved view
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_taskAdds a task (card) to a list, or to a board's first list when only boardId is given.No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a task (card) to a list, or to a board's first list when only boardId is given. The description becomes the card's page and accepts Markdown (headings, bullet and numbered lists, - [ ] task lists, bold, italic, code, links, fenced code). Optional due date, reminders, repeat (Pro) and a checklist. The board's rules for new cards run, as in the app.

    Annotations the server declares

    • title: Create task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • create_task_from_templateAdds a task to a list from one of the board's card templates.No findings

    Why it is in this group

    • The name "create_task_from_template" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds a task to a list from one of the board's card templates.

    Annotations the server declares

    • title: Create task from template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_attachmentDeletes an attachment from a task (and the task's cover, if it was the cover image).No findings

    Why it is in this group

    • The name "delete_attachment" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes an attachment from a task (and the task's cover, if it was the cover image). Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete attachment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_automationDeletes a board rule.No findings

    Why it is in this group

    • The name "delete_automation" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a board rule. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete automation
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_boardPermanently deletes a board the user owns, with every list, card, comment and attachment on it, also for the people it is shared with.No findings

    Why it is in this group

    • The name "delete_board" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a board the user owns, with every list, card, comment and attachment on it, also for the people it is shared with. Irreversible. Without confirm: true nothing is deleted and the result is a preview of what would be lost.

    Annotations the server declares

    • title: Delete board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_card_templateDeletes a card template; tasks made from it stay.No findings

    Why it is in this group

    • The name "delete_card_template" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a card template; tasks made from it stay. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete card template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_checklistDeletes a checklist with all its items.No findings

    Why it is in this group

    • The name "delete_checklist" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a checklist with all its items. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete checklist
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_checklist_itemDeletes one checklist item.No findings

    Why it is in this group

    • The name "delete_checklist_item" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes one checklist item. A checklist keeps at least one item, so its last item only goes away with the whole checklist. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete checklist item
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_client_commentPermanently removes one comment from a task's conversation on the client portal (spam, a mistake): the client's page stops showing it at once.No findings

    Why it is in this group

    • The name "delete_client_comment" says "delete": a word for removing or ending something.
    • The description says "Permanently removes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently removes one comment from a task's conversation on the client portal (spam, a mistake): the client's page stops showing it at once. Works on the client's comments and on the team's answers. Only the project owner. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete client comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • delete_commentDeletes a comment (the user's own, or any on a board the user owns).No findings

    Why it is in this group

    • The name "delete_comment" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a comment (the user's own, or any on a board the user owns). Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_custom_fieldDeletes a custom field and its value on every card.No findings

    Why it is in this group

    • The name "delete_custom_field" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a custom field and its value on every card. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete custom field
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_expensePermanently deletes an expense that is not yet on an invoice.No findings

    Why it is in this group

    • The name "delete_expense" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes an expense that is not yet on an invoice. The person who logged it and the project owner can delete it. Needs confirm: true; without it the result is a preview of what would be lost.

    Annotations the server declares

    • title: Delete expense
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_invoice_draftDeletes a draft invoice or estimate for good.No findings

    Why it is in this group

    • The name "delete_invoice_draft" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a draft invoice or estimate for good. Only a draft: it was not sent, so no client saw it, and it has no number, so no gap is left in the numbering. The hours and expenses it had taken go back to the project's unbilled work, and an estimate it was made from can become an invoice again. A deleted draft stops counting toward the free plan's monthly allowance. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete invoice draft
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_labelDeletes a label from a board and removes it from every card that has it.No findings

    Why it is in this group

    • The name "delete_label" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a label from a board and removes it from every card that has it. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete label
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_listPermanently deletes a list and every card in it, archived ones included.No findings

    Why it is in this group

    • The name "delete_list" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a list and every card in it, archived ones included. Irreversible. Needs confirm: true; without it the result is a preview with the number of cards that would be lost.

    Annotations the server declares

    • title: Delete list
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_pagePermanently deletes a note or discussion with all its comments.No findings

    Why it is in this group

    • The name "delete_page" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a note or discussion with all its comments. Its author and the project owner can. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete page
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_page_commentPermanently deletes a page comment.No findings

    Why it is in this group

    • The name "delete_page_comment" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a page comment. Its author and the project owner can. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete page comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_project_templatePermanently deletes a saved template of the user (projects already made from it are untouched; the starters cannot be deleted).No findings

    Why it is in this group

    • The name "delete_project_template" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a saved template of the user (projects already made from it are untouched; the starters cannot be deleted). Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete project template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_sample_projectPermanently deletes the sample project with everything on it (its tasks, hours and anything added to it since) and the sample client if nothing else uses it.No findings

    Why it is in this group

    • The name "delete_sample_project" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes the sample project with everything on it (its tasks, hours and anything added to it since) and the sample client if nothing else uses it. The user's own projects and reports are untouched. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete sample project
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_saved_viewDeletes one of the user's saved views.No findings

    Why it is in this group

    • The name "delete_saved_view" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes one of the user's saved views. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Delete saved view
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_taskPermanently deletes a task with its comments, checklists and attachments.No findings

    Why it is in this group

    • The name "delete_task" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a task with its comments, checklists and attachments. Irreversible. Needs confirm: true; without it the result is a preview of what would be lost.

    Annotations the server declares

    • title: Delete task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_time_entryPermanently deletes a time entry, or a running timer.No findings

    Why it is in this group

    • The name "delete_time_entry" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes a time entry, or a running timer. A person deletes their own entries and the project owner deletes anyone's; time already billed to a client cannot be deleted. Needs confirm: true; without it the result is a preview of what would be lost.

    Annotations the server declares

    • title: Delete time entry
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • duplicate_boardCopies a board the user can see into a new board the user owns: lists, cards (content, dates, checklists, labels) and look.No findings

    Why it is in this group

    • The description's first verb is "copy": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Copies a board the user can see into a new board the user owns: lists, cards (content, dates, checklists, labels) and look. Members, comments and attachments are not copied. Counts toward the free plan's 5 owned boards.

    Annotations the server declares

    • title: Duplicate board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • duplicate_invoiceCreates a new draft with the same client, lines, tax, notes and terms as an invoice or estimate, dated today and without a number until it is sent; no work, no payments.No findings

    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).
    Description, as the server wrote it
    Creates a new draft with the same client, lines, tax, notes and terms as an invoice or estimate, dated today and without a number until it is sent; no work, no payments. Counts toward the free plan's 2 documents per month.

    Annotations the server declares

    • title: Duplicate invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • duplicate_listCopies a list with its open cards (content, dates, labels, checklists) to the end of the same board.1 finding

    Why it is in this group

    • The name "duplicate_list" says "list": a word for reading.
    • The description's first verb is "copy": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "duplicate_list" destructive (destructiveHint: true), and its name says "list", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "duplicate_list" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Copies a list with its open cards (content, dates, labels, checklists) to the end of the same board.

    Annotations the server declares

    • title: Duplicate list
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • duplicate_taskCopies a task right below the original: title, description, dates, labels, cover, field values and checklists (not comments, assignees or attachments).No findings

    Why it is in this group

    • The description's first verb is "copy": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Copies a task right below the original: title, description, dates, labels, cover, field values and checklists (not comments, assignees or attachments).

    Annotations the server declares

    • title: Duplicate task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • edit_commentEdits a comment's text (the user's own, or any on a board the user owns).No findings

    Why it is in this group

    • The name "edit_comment" says "edit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Edits a comment's text (the user's own, or any on a board the user owns). It shows as edited.

    Annotations the server declares

    • title: Edit comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • edit_page_commentChanges the text of one of the user's own page comments.No findings

    Why it is in this group

    • The name "edit_page_comment" says "edit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes the text of one of the user's own page comments. Not on an archived page. Needs the editor role on the project.

    Annotations the server declares

    • title: Edit page comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • email_invoiceEmails the document to the client from Decknote on the user's behalf (replies go to the user), with a link to it; a draft takes the next number, becomes sent and its link is publis…No findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Emails the document to the client from Decknote on the user's behalf (replies go to the user), with a link to it; a draft takes the next number, becomes sent and its link is published. One plain address: the document's or `to`. Limited to 20 emails an hour per person and 5 per document. Needs confirm: true and amount equal to the total; without them the result is a preview with the exact email.

    Annotations the server declares

    • title: Email invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • import_time_csvImports a CSV of hours: creates the clients and projects it names (when createClients is on), a task for each task name, and one time entry per row, logged as the user unless the f…No findings

    Why it is in this group

    • The name "import_time_csv" says "import": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Imports a CSV of hours: creates the clients and projects it names (when createClients is on), a task for each task name, and one time entry per row, logged as the user unless the file names a project member's email. Rows already imported before are skipped, and the whole import can be taken back. The plan is made again from the file and the account at that moment. Same arguments as the preview; the CSV travels as text, up to 200,000 characters (bigger files go through the Import page of the app). Names from the file are text written by others. Needs confirm: true; without it the result is the preview.

    Annotations the server declares

    • title: Import time CSV
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • import_trello_boardCreates a board from a Trello JSON export (in Trello: Menu → Print, export and share → Export as JSON): lists, cards with Markdown descriptions, dates, labels, checklists, comments…No findings

    Why it is in this group

    • The name "import_trello_board" says "import": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a board from a Trello JSON export (in Trello: Menu → Print, export and share → Export as JSON): lists, cards with Markdown descriptions, dates, labels, checklists, comments and links. Counts toward the free plan's 5 owned boards.

    Annotations the server declares

    • title: Import Trello board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • leave_boardRemoves the user from a board someone else shared with them; only the owner can add them back.No findings

    Why it is in this group

    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Removes the user from a board someone else shared with them; only the owner can add them back. The owner can't leave their own board. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Leave board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • log_timeAdds hours by hand to a project, or to one of its tasks.1 finding

    Why it is in this group

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

    Findings

    • Warn

      The server marks "log_time" destructive (destructiveHint: true), and its name says "log", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "log_time" says "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Adds hours by hand to a project, or to one of its tasks. The entry takes the project's hourly rate (or the client's) and is billable according to the task's setting, else the project's, unless billable is given. Needs the editor role on the project.

    Annotations the server declares

    • title: Log time
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • mark_client_comments_readMarks the client's portal comments as read, and clears the bell notices about them: those of one task (cardId) or every one of the project (boardId).No findings

    Why it is in this group

    • The name "mark_client_comments_read" says "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks the client's portal comments as read, and clears the bell notices about them: those of one task (cardId) or every one of the project (boardId). Give exactly one of the two. Only the project owner.

    Annotations the server declares

    • title: Mark client comments read
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • mark_notifications_readMarks notifications as read: one (notificationId, which also marks the others about the same card, as opening it in the app does), every one about a card (cardId), or all of them (…No findings

    Why it is in this group

    • The name "mark_notifications_read" says "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks notifications as read: one (notificationId, which also marks the others about the same card, as opening it in the app does), every one about a card (cardId), or all of them (all: true).

    Annotations the server declares

    • title: Mark notifications read
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • move_taskMoves a task to another list: on the same board, optionally to a position (index 0 = top), or on another board the user can edit (it lands at the end).No findings

    Why it is in this group

    • The name "move_task" says "move": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Moves a task to another list: on the same board, optionally to a position (index 0 = top), or on another board the user can edit (it lands at the end). Moving to another board drops the old board's labels and the assignees and watchers who can't see the new board, as in the app.

    Annotations the server declares

    • title: Move task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • open_billing_portalCreates a link to Stripe's billing portal, where the user manages their Pro subscription: payment card, invoices, monthly or yearly billing, cancellation.No findings

    Why it is in this group

    • The name "open_billing_portal" says "open": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a link to Stripe's billing portal, where the user manages their Pro subscription: payment card, invoices, monthly or yearly billing, cancellation. Changes happen there, made by the user.

    Annotations the server declares

    • title: Open billing portal
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • react_to_commentAdds or removes the user's emoji reaction on a comment.No findings

    Why it is in this group

    • The name "react_to_comment" says "react": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote itContains invisible characters, shown as [U+…]
    Adds or removes the user's emoji reaction on a comment. Emojis: 👍 ❤[U+FE0F] 🎉 😄 👀 🚀.

    Annotations the server declares

    • title: React to comment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • record_estimate_answerRecords that the client accepted or declined a sent estimate (by phone or email), with the name of who answered.No findings

    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).
    Description, as the server wrote it
    Records that the client accepted or declined a sent estimate (by phone or email), with the name of who answered. The estimate leaves the sent state; an accepted one can become an invoice. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Record estimate answer
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • record_invoice_paymentRecords that the client paid, fully or in part, on a sent invoice: the amount, the day (default today, not in the future), the method (bank, card, cash, paypal, other) and a note.No findings

    Why it is in this group

    • The name "record_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Records that the client paid, fully or in part, on a sent invoice: the amount, the day (default today, not in the future), the method (bank, card, cash, paypal, other) and a note. It records that the client paid; it does not charge or move money. The invoice becomes paid when the payments cover the total. A payment above the balance needs confirmOverpay. Needs confirm: true; without it the result is a preview with the balance.

    Annotations the server declares

    • title: Record invoice payment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • remove_invoice_paymentDeletes a recorded payment from an invoice, as if it had not been written down; a paid invoice that is no longer covered goes back to sent.No findings

    Why it is in this group

    • The name "remove_invoice_payment" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes a recorded payment from an invoice, as if it had not been written down; a paid invoice that is no longer covered goes back to sent. It undoes a note in the books; no money moves. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Remove invoice payment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • remove_memberRemoves someone from a board the user owns: they lose access, and their assignments, watches and reactions on it are removed (their comments stay).No findings

    Why it is in this group

    • The name "remove_member" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Removes someone from a board the user owns: they lose access, and their assignments, watches and reactions on it are removed (their comments stay). Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Remove member
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • remove_reminderDeletes one of the user's reminders.No findings

    Why it is in this group

    • The name "remove_reminder" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes one of the user's reminders.

    Annotations the server declares

    • title: Remove reminder
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • rename_attachmentRenames an attachment; a file keeps its extension.No findings

    Why it is in this group

    • The name "rename_attachment" says "rename": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Renames an attachment; a file keeps its extension.

    Annotations the server declares

    • title: Rename attachment
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • rename_project_templateChanges the name and description of a saved template (also one that is damaged and cannot be used).No findings

    Why it is in this group

    • The name "rename_project_template" says "rename": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes the name and description of a saved template (also one that is damaged and cannot be used). The description is cleared when not given.

    Annotations the server declares

    • title: Rename project template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • reopen_taskMarks a completed task as not done again.No findings

    Why it is in this group

    • The name "reopen_task" says "reopen": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks a completed task as not done again.

    Annotations the server declares

    • title: Reopen task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • reply_to_clientPosts an answer from the team under a task on the client portal, shown to anyone who has the portal link under the studio name (not the user's own name) and marking the client's co…No findings

    Why it is in this group

    • The name "reply_to_client" says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Posts an answer from the team under a task on the client portal, shown to anyone who has the portal link under the studio name (not the user's own name) and marking the client's comments on that task as read. It is not emailed. Up to 2000 characters. The portal has to exist. Only the project owner. Needs confirm: true; without it the result is a preview with the exact text.

    Annotations the server declares

    • title: Reply to client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • restore_boardRestores an archived board the user owns to everyone's dashboard.No findings

    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).
    Description, as the server wrote it
    Restores an archived board the user owns to everyone's dashboard.

    Annotations the server declares

    • title: Restore board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • restore_clientBrings an archived client back to the active list.No findings

    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).
    Description, as the server wrote it
    Brings an archived client back to the active list. The free plan's limit of 2 active clients applies.

    Annotations the server declares

    • title: Restore client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • restore_taskPuts an archived task back on its list.No findings

    Why it is in this group

    • The description's first verb is "put": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Puts an archived task back on its list.

    Annotations the server declares

    • title: Restore task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • revoke_accessRevokes one of the user's API tokens (apiTokenId) or disconnects a connected app (appClientId), as listed in the account.No findings

    Why it is in this group

    • The name "revoke_access" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revokes one of the user's API tokens (apiTokenId) or disconnects a connected app (appClientId), as listed in the account. Whatever used it stops working at once, including this connection if it is the one in use. Needs confirm: true; without it the result is a preview. New tokens are only created by the user, in Settings.

    Annotations the server declares

    • title: Revoke access
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • revoke_embedTurns off one of a board's embeds: the app showing it loses access at its next request.No findings

    Why it is in this group

    • The name "revoke_embed" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns off one of a board's embeds: the app showing it loses access at its next request. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Revoke embed
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • save_project_as_templateSaves a project's shape as a template: its lists, open tasks (title, estimate, billable, labels, checklists with the items unticked, due dates as days from the start), labels and b…No findings

    Why it is in this group

    • The name "save_project_as_template" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Saves a project's shape as a template: its lists, open tasks (title, estimate, billable, labels, checklists with the items unticked, due dates as days from the start), labels and billable default. Its people, comments, logged time, descriptions, attachments and client are left out. The budget and the hourly rate are saved only with includeMoney. Only the project owner. The free plan keeps 1 saved template; Pro has no limit.

    Annotations the server declares

    • title: Save project as template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • save_task_as_templateSaves a task's description and labels as a reusable card template on its board.No findings

    Why it is in this group

    • The name "save_task_as_template" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Saves a task's description and labels as a reusable card template on its board.

    Annotations the server declares

    • title: Save task as template
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • send_invoiceMarks a draft as sent, gives it the next number and publishes its link: anyone who has the link can read the document (lines, amounts, the user's business details), and for an esti…No findings

    Why it is in this group

    • The name "send_invoice" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks a draft as sent, gives it the next number and publishes its link: anyone who has the link can read the document (lines, amounts, the user's business details), and for an estimate answer it. Nothing is emailed. After that only the notes and the due date change. The draft needs a client name, at least one line and a total above zero. Needs confirm: true and amount equal to the total; without them the result is a preview.

    Annotations the server declares

    • title: Send invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • set_automation_enabledTurns a board rule on or off without deleting it.No findings

    Why it is in this group

    • The name "set_automation_enabled" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns a board rule on or off without deleting it.

    Annotations the server declares

    • title: Enable or disable automation
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_board_preferencesSets the user's own preferences for a board: favorite (starred) and muted (no notifications from it).No findings

    Why it is in this group

    • The name "set_board_preferences" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets the user's own preferences for a board: favorite (starred) and muted (no notifications from it). Affects only the user.

    Annotations the server declares

    • title: Set board preferences
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_my_weekly_capacitySets how many hours a week the user can work, which the workload view compares their planned work with: 40, 37.5 or 37:30; 0 for someone who is away, at most 168.No findings

    Why it is in this group

    • The name "set_my_weekly_capacity" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets how many hours a week the user can work, which the workload view compares their planned work with: 40, 37.5 or 37:30; 0 for someone who is away, at most 168. Only the user's own: there is no way to set another person's.

    Annotations the server declares

    • title: Set my weekly capacity
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_page_archivedArchives a page (it leaves the list, becomes read-only and loses its pin) or restores it.No findings

    Why it is in this group

    • The name "set_page_archived" says "set": a word for a change.
    • The description's first verb is "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archives a page (it leaves the list, becomes read-only and loses its pin) or restores it. Only the project owner.

    Annotations the server declares

    • title: Set page archived
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_page_pinnedPins a page to the top of its list, or unpins it.No findings

    Why it is in this group

    • The name "set_page_pinned" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Pins a page to the top of its list, or unpins it. Only the project owner; an archived page cannot be pinned.

    Annotations the server declares

    • title: Set page pinned
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_task_assigneesAssigns or unassigns board members on a task.No findings

    Why it is in this group

    • The name "set_task_assignees" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Assigns or unassigns board members on a task. Assigning someone other than the user sends them a push and an email, as in the app, so it needs confirm: true and returns a preview without it; self-assigning and unassigning don't.

    Annotations the server declares

    • title: Set task assignees
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • set_task_billableSets whether time logged on a task is billable to the client (true or false), or makes it follow the project's default (null).No findings

    Why it is in this group

    • The name "set_task_billable" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets whether time logged on a task is billable to the client (true or false), or makes it follow the project's default (null). Applies to time logged from then on; entries already logged keep their setting. Needs the editor role on the project.

    Annotations the server declares

    • title: Set task billable
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_task_estimateSets how long a task is expected to take, or clears it with null.No findings

    Why it is in this group

    • The name "set_task_estimate" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets how long a task is expected to take, or clears it with null. Written with a unit: 4h, 1h30, 90m, 1.5h (a bare number is minutes); up to 10,000 hours. Needs the editor role on the project.

    Annotations the server declares

    • title: Set task estimate
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_task_fieldSets a custom field's value on a task, or clears it with null.No findings

    Why it is in this group

    • The name "set_task_field" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets a custom field's value on a task, or clears it with null. text: any text; number: a number; select: one of its options; checkbox: true or false; date: YYYY-MM-DD.

    Annotations the server declares

    • title: Set task custom field
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_task_labelsAdds and/or removes labels of the task's board on a task.No findings

    Why it is in this group

    • The name "set_task_labels" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Adds and/or removes labels of the task's board on a task. Adding a label runs the board's 'label added' rules, as in the app.

    Annotations the server declares

    • title: Set task labels
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • set_task_visible_to_clientShows a task on the project's client portal, or stops showing it.No findings

    Why it is in this group

    • The name "set_task_visible_to_client" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Shows a task on the project's client portal, or stops showing it. Visitors read the task's title, whether it is done, in progress or late, and its due date, and can comment on it; descriptions, files, people, time and money are not shown. Making it visible needs confirm: true (without it the result is a preview); hiding it does not. Needs the editor role on the project.

    Annotations the server declares

    • title: Set task visible to client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • share_boardShares a board the user owns with someone by email, as EDITOR or VIEWER.No findings

    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).
    Description, as the server wrote it
    Shares a board the user owns with someone by email, as EDITOR or VIEWER. People with an account get access right away; others get an invitation to sign up. Decknote emails them either way, so it needs confirm: true; without it the result is a preview. Sharing is a Pro feature on the web (one flat price, not per person).

    Annotations the server declares

    • title: Share board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • sort_listReorders a list's cards by due date (soonest first, undated last), by title (A to Z) or by creation (newest first).1 finding

    Why it is in this group

    • The name "sort_list" says "list": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "sort_list" destructive (destructiveHint: true), and its name says "list", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "sort_list" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Reorders a list's cards by due date (soonest first, undated last), by title (A to Z) or by creation (newest first).

    Annotations the server declares

    • title: Sort list
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • start_pro_checkoutStarts an upgrade to Decknote Pro (14-day free trial, then US$9/month or US$90/year) by creating a Stripe Checkout link where the user pays; this tool charges nothing.No findings

    Why it is in this group

    • The name "start_pro_checkout" says "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Starts an upgrade to Decknote Pro (14-day free trial, then US$9/month or US$90/year) by creating a Stripe Checkout link where the user pays; this tool charges nothing. Without confirm: true it returns the exact price and changes nothing; with confirm: true, amount has to equal that price. Accounts billed through Shopify are upgraded from the Shopify admin, not here.

    Annotations the server declares

    • title: Start Pro checkout
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • start_timerStarts the user's time tracker on a project, optionally on one of its tasks.No findings

    Why it is in this group

    • The name "start_timer" says "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Starts the user's time tracker on a project, optionally on one of its tasks. There is one timer per person: a timer already running is stopped and its time kept first (a timer stopped within 30 seconds is dropped as an accidental click). The hours are the time elapsed when it stops, rounded to the minute and capped at 16 hours. Needs the editor role on the project.

    Annotations the server declares

    • title: Start timer
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • stop_timerStops the user's running timer and keeps the elapsed time as a time entry.No findings

    Why it is in this group

    • The name "stop_timer" says "stop": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Stops the user's running timer and keeps the elapsed time as a time entry. A timer stopped within 30 seconds is dropped as an accidental click. Says so when no timer was running.

    Annotations the server declares

    • title: Stop timer
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • transfer_boardHands a board the user owns to one of its members: they become the owner (their plan then decides the board's Pro features) and the user stays on as an editor.No findings

    Why it is in this group

    • The name "transfer_board" says "transfer": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Hands a board the user owns to one of its members: they become the owner (their plan then decides the board's Pro features) and the user stays on as an editor. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Transfer board ownership
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • undo_time_importTakes an import back: deletes its time entries and the clients, projects and tasks it created that nobody has used since (those that were used are kept, and the result counts them)…No findings

    Why it is in this group

    • The name "undo_time_import" says "import": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Takes an import back: deletes its time entries and the clients, projects and tasks it created that nobody has used since (those that were used are kept, and the result counts them). Refused when some of the time was already invoiced, when it was already undone, and for the sample project. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Undo time import
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_accountChanges the user's settings: display name, language (en, es, fr), time zone (IANA, e.g.No findings

    Why it is in this group

    • The name "update_account" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes the user's settings: display name, language (en, es, fr), time zone (IANA, e.g. America/Argentina/Buenos_Aires; the daily digest goes out in the user's morning) and which notifications they get (mention, assigned, comment, due; email turns emails on or off).

    Annotations the server declares

    • title: Update account settings
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_billing_profileSets or changes the user's billing details: business name (required the first time), address, tax id, email, phone, currency, prefixes and next numbers of invoices and estimates, d…No findings

    Why it is in this group

    • The name "update_billing_profile" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sets or changes the user's billing details: business name (required the first time), address, tax id, email, phone, currency, prefixes and next numbers of invoices and estimates, default tax (percentage and name), payment terms in days, payment instructions and default notes; null clears an optional text. New documents copy these; documents already issued keep what they had.

    Annotations the server declares

    • title: Update billing profile
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_boardChanges a board's title, icon (one emoji), cover color or background image (Pro; PNG, JPEG, WEBP or GIF up to 5 MB, base64-encoded), or removes the background.No findings

    Why it is in this group

    • The name "update_board" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a board's title, icon (one emoji), cover color or background image (Pro; PNG, JPEG, WEBP or GIF up to 5 MB, base64-encoded), or removes the background. Needs edit access to the board.

    Annotations the server declares

    • title: Update board
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_checklistRenames a checklist or moves it among the task's checklists (index 0 = top).No findings

    Why it is in this group

    • The name "update_checklist" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Renames a checklist or moves it among the task's checklists (index 0 = top).

    Annotations the server declares

    • title: Update checklist
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_checklist_itemChecks or unchecks a checklist item, or changes its text.No findings

    Why it is in this group

    • The name "update_checklist_item" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Checks or unchecks a checklist item, or changes its text.

    Annotations the server declares

    • title: Update checklist item
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_clientChanges a client's name, contact details, currency, default hourly rate or notes; null clears an optional field.No findings

    Why it is in this group

    • The name "update_client" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a client's name, contact details, currency, default hourly rate or notes; null clears an optional field. A new rate applies to time logged from then on: entries already logged keep the rate they were logged with.

    Annotations the server declares

    • title: Update client
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_client_portalTurns a project's client portal on or off and sets what it shows: tasks, hours (hours only; rates and money are left out), the list of sent documents, whether clients may comment, …No findings

    Why it is in this group

    • The name "update_client_portal" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns a project's client portal on or off and sets what it shows: tasks, hours (hours only; rates and money are left out), the list of sent documents, whether clients may comment, a welcome text and the studio name shown on the page and on answers. The first time it creates the portal and its link, on. Turning it on or changing what an enabled portal shows publishes that to anyone with the link and needs confirm: true (without it the result is a preview); turning it off does not. A Pro feature, except turning an existing portal off. Only the project owner.

    Annotations the server declares

    • title: Update client portal
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • update_custom_fieldRenames a custom field or changes a select field's options.No findings

    Why it is in this group

    • The name "update_custom_field" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Renames a custom field or changes a select field's options. Removing an option that cards use clears it from them, which needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Update custom field
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_expenseChanges an expense that is not yet on an invoice: description, amount, day, category, vendor, billable, markup (project owner only) or its task (null removes it).No findings

    Why it is in this group

    • The name "update_expense" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes an expense that is not yet on an invoice: description, amount, day, category, vendor, billable, markup (project owner only) or its task (null removes it). The person who logged it and the project owner can change it.

    Annotations the server declares

    • title: Update expense
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_invoiceChanges a document.No findings

    Why it is in this group

    • The name "update_invoice" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a document. A draft takes every field (client, dates, currency, tax, discount, notes, terms, who it is for, project and the whole list of lines, which replaces the current ones); once sent only the notes and the due date change; once paid or answered, only the notes. Totals are recomputed on the server. null clears an optional field.

    Annotations the server declares

    • title: Update invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_labelRenames or recolors a label; the change shows on every card that has it.No findings

    Why it is in this group

    • The name "update_label" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Renames or recolors a label; the change shows on every card that has it.

    Annotations the server declares

    • title: Update label
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_listRenames a list, sets its WIP limit (Pro; null clears it) or moves it to another position among the board's lists (index 0 = first).No findings

    Why it is in this group

    • The name "update_list" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Renames a list, sets its WIP limit (Pro; null clears it) or moves it to another position among the board's lists (index 0 = first). Needs edit access to the board.

    Annotations the server declares

    • title: Update list
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_memberChanges a member's role on a board the user owns: EDITOR (can change things) or VIEWER (read only).No findings

    Why it is in this group

    • The name "update_member" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a member's role on a board the user owns: EDITOR (can change things) or VIEWER (read only).

    Annotations the server declares

    • title: Change member role
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_pageChanges a page's title and/or body (Markdown, replacing the whole body).No findings

    Why it is in this group

    • The name "update_page" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a page's title and/or body (Markdown, replacing the whole body). It needs the rev from when the page was read: if somebody saved in between, the save is refused with the reason and nothing is overwritten. Pinning, archiving and comments do not change the rev. A discussion's text is edited by its author and the project owner; an archived page is read-only. A page with images, or with a body longer than 100,000 characters, keeps its body: only its title changes. Needs the editor role on the project.

    Annotations the server declares

    • title: Update page
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_project_settingsTurns a board into a project or changes its settings: client (one of the user's own), status, budget type with its hours or amount, default hourly rate, billable by default, start …No findings

    Why it is in this group

    • The name "update_project_settings" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns a board into a project or changes its settings: client (one of the user's own), status, budget type with its hours or amount, default hourly rate, billable by default, start and due dates. null clears a value. A new rate applies to time logged from then on. Only the board's owner can do this.

    Annotations the server declares

    • title: Update project settings
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_taskEdits a task: title, description, due date, start date, repeat or cover (a color, or one of the task's image attachments).No findings

    Why it is in this group

    • The name "update_task" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Edits a task: title, description, due date, start date, repeat or cover (a color, or one of the task's image attachments). The description accepts Markdown and replaces the card's whole page. null clears a date, the repeat or the cover.

    Annotations the server declares

    • title: Update task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • update_time_entryChanges a finished time entry: its duration, day, note, whether it is billable, or the task it is on (null takes it off any task).No findings

    Why it is in this group

    • The name "update_time_entry" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Changes a finished time entry: its duration, day, note, whether it is billable, or the task it is on (null takes it off any task). A person edits their own entries and the project owner edits anyone's. Time already billed to a client, and a timer still running, cannot be edited.

    Annotations the server declares

    • title: Update time entry
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • void_invoiceVoids a sent invoice or estimate: it cannot change any more, its number is kept, and the hours and expenses it had taken go back to the project's unbilled work.No findings

    Why it is in this group

    • The name "void_invoice" says "void": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Voids a sent invoice or estimate: it cannot change any more, its number is kept, and the hours and expenses it had taken go back to the project's unbilled work. A draft is not voided (it is deleted). An invoice with payments recorded, and an estimate whose invoice still stands, cannot be voided. Needs confirm: true; without it the result is a preview.

    Annotations the server declares

    • title: Void invoice
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • watch_taskStarts or stops watching a task (watchers are notified of new comments on it).No findings

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Starts or stops watching a task (watchers are notified of new comments on it). Affects only the user.

    Annotations the server declares

    • title: Watch task
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
Can't be undone 3Claude Code: ask
  • export_invoices_csvExports the matching invoices and estimates as CSV text for an accountant: number, type, status, dates, client, currency, subtotal, discount, tax, total, paid and balance.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "export_invoices_csv" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Exports the matching invoices and estimates as CSV text for an accountant: number, type, status, dates, client, currency, subtotal, discount, tax, total, paid and balance. Same filters as the list. Cells that start with = + - or @ are escaped so a spreadsheet does not run them. A Pro feature; large exports are cut at 400,000 characters.

    Annotations the server declares

    • title: Export invoices CSV
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • export_time_reportExports the detail lines of a date range as CSV text (date, project, client, task, person, hours, billable, rate per hour), with the same filters and visibility as the time report.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "export_time_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Exports the detail lines of a date range as CSV text (date, project, client, task, person, hours, billable, rate per hour), with the same filters and visibility as the time report. Cells that start with = + - or @ are escaped so a spreadsheet does not run them. A Pro feature; large exports are cut at 400,000 characters.

    Annotations the server declares

    • title: Export time report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_time_reportAdds up the time logged in a date range, grouped by project, client, person, task or day: minutes, billable minutes and the billable amount in cents (hours times the rate each entr…1 finding

    Why it is in this group

    • The name "get_time_report" says "get": a word for reading.
    • The description's first verb is "add": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_time_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_time_report" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Adds up the time logged in a date range, grouped by project, client, person, task or day: minutes, billable minutes and the billable amount in cents (hours times the rate each entry was logged with; clients in different currencies add up as plain numbers). The user's own projects count everyone's time and money; projects the user only belongs to count the user's own hours, with no amounts.

    Annotations the server declares

    • title: Get time report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
Changes things 1Claude Code: ask
  • export_dataExports everything the user can read in Decknote as one JSON document (boards, lists, cards, checklists, comments, attachment metadata), the same export as Settings → Your data.No findings

    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 read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Exports everything the user can read in Decknote as one JSON document (boards, lists, cards, checklists, comments, attachment metadata), the same export as Settings → Your data. Up to 5 per hour.

    Annotations the server declares

    • title: Export data
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
Only reads 42Claude Code: allow
  • api_readReads from Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with GET; it doesn't change anything.No findings

    Why it is in this group

    • The name "api_read" says "read": a word for reading.
    Description, as the server wrote it
    Reads from Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with GET; it doesn't change anything. Covers what no dedicated tool returns, such as the contents of an uploaded text file or a link preview. Reachable: GET /api/v1/me: the user (id, name, email); GET /api/v1/boards: the user's boards and their lists; GET /api/v1/boards/{boardId}/embeds: a board's live embeds (owner); GET /api/export: everything the user can read, as one JSON document; GET /api/link-preview?url=…: the title and description of a web page; GET /api/attachments/{attachmentId}: an uploaded file (text files come back as text; others as type and size). Takes a path on Decknote itself (not a full URL) and optional query parameters. Authentication, token, session, admin, payment and internal endpoints are not reachable, and secrets are removed from responses.

    Annotations the server declares

    • title: Read from Decknote API
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • fetchReads one card by id as a document: title, board and list, due date, labels, description, checklists and comments.No findings

    Why it is in this group

    • The name "fetch" says "fetch": a word for reading.
    Description, as the server wrote it
    Reads one card by id as a document: title, board and list, due date, labels, description, checklists and comments.

    Annotations the server declares

    • title: Fetch card
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_accountReads the user's account and settings: name, email, language, time zone, notification preferences, plan with its limits and usage, upgrade prices, API tokens and connected apps (na…No findings

    Why it is in this group

    • The name "get_account" says "get": a word for reading.
    Description, as the server wrote it
    Reads the user's account and settings: name, email, language, time zone, notification preferences, plan with its limits and usage, upgrade prices, API tokens and connected apps (names and dates only; secrets are not included).

    Annotations the server declares

    • title: Get account
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_billing_profileReads the user's billing details that are copied onto every new invoice and estimate: business name, address, tax id, email, phone, currency, the invoice and estimate prefixes and …No findings

    Why it is in this group

    • The name "get_billing_profile" says "get": a word for reading.
    Description, as the server wrote it
    Reads the user's billing details that are copied onto every new invoice and estimate: business name, address, tax id, email, phone, currency, the invoice and estimate prefixes and next numbers, the default tax and its name, payment terms in days, payment instructions and default notes. Returns null when they are not set up yet.

    Annotations the server declares

    • title: Get billing profile
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_billing_reportA studio's numbers for a date range (default: the last 12 months): invoiced and collected by month, by client and what each client owes, expenses by project and category, and the p…No findings

    Why it is in this group

    • The name "get_billing_report" says "get": a word for reading.
    Description, as the server wrote it
    A studio's numbers for a date range (default: the last 12 months): invoiced and collected by month, by client and what each client owes, expenses by project and category, and the profitability of each project (revenue, expenses, profit and revenue per hour). Per currency, not mixed across currencies; amounts in cents. The range is at most 1100 days.

    Annotations the server declares

    • title: Get billing report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_boardReads one board in full, like opening it in the app: lists with their cards (dates, labels, assignees, checklist progress, custom field values), labels, members and the user's role…No findings

    Why it is in this group

    • The name "get_board" says "get": a word for reading.
    Description, as the server wrote it
    Reads one board in full, like opening it in the app: lists with their cards (dates, labels, assignees, checklist progress, custom field values), labels, members and the user's role, custom fields, rules, card templates, the user's saved views, recently archived cards, the public link and pending invitations (owner only) and the plan limits that apply, with every id.

    Annotations the server declares

    • title: Get board
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_board_live_urlReturns a short-lived address (2 minutes to connect) of a board's live event stream: a Server-Sent Events URL that announces every change to the board and who is viewing it.No findings

    Why it is in this group

    • The name "get_board_live_url" says "get": a word for reading.
    Description, as the server wrote it
    Returns a short-lived address (2 minutes to connect) of a board's live event stream: a Server-Sent Events URL that announces every change to the board and who is viewing it. Used by the board view to update itself.

    Annotations the server declares

    • title: Get board live updates address
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_client_portalReads a project's client portal settings: whether it exists and is on, its link (anyone who has the link can read the page), what it shows (tasks, hours, documents), whether client…No findings

    Why it is in this group

    • The name "get_client_portal" says "get": a word for reading.
    Description, as the server wrote it
    Reads a project's client portal settings: whether it exists and is on, its link (anyone who has the link can read the page), what it shows (tasks, hours, documents), whether clients can comment, the welcome text and studio name, how many tasks are marked visible, how many client comments are unread, and the latest eight comments with their author, email and text. The comments are written by the client, who needs no account. Only the project owner; the portal is a Pro feature.

    Annotations the server declares

    • title: Get client portal
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_invoiceReads one invoice or estimate in full: status, dates, the sender and the client copied onto it, every line, tax, discount, totals, payments, balance, the public link (null if none)…No findings

    Why it is in this group

    • The name "get_invoice" says "get": a word for reading.
    Description, as the server wrote it
    Reads one invoice or estimate in full: status, dates, the sender and the client copied onto it, every line, tax, discount, totals, payments, balance, the public link (null if none), when it was sent, viewed and paid, the estimate it came from or became, the work attached, and which changes are open in its status. The name typed by whoever answered an estimate from the link is text written by the client.

    Annotations the server declares

    • title: Get invoice
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_invoice_email_draftShows the email that would go to the client for a draft or sent document: the address, the subject and the text, with the personal message and the language if given; a reminder rea…No findings

    Why it is in this group

    • The name "get_invoice_email_draft" says "get": a word for reading.
    Description, as the server wrote it
    Shows the email that would go to the client for a draft or sent document: the address, the subject and the text, with the personal message and the language if given; a reminder reads differently for a sent invoice with a balance. Sends nothing and changes nothing; says whether this server can send email at all.

    Annotations the server declares

    • title: Get invoice email draft
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_pageReads one note or discussion in full: its title, its body as Markdown (up to 100,000 characters; bodyTruncated says it was cut), who started it, whether it is pinned or archived, i…No findings

    Why it is in this group

    • The name "get_page" says "get": a word for reading.
    Description, as the server wrote it
    Reads one note or discussion in full: its title, its body as Markdown (up to 100,000 characters; bodyTruncated says it was cut), who started it, whether it is pinned or archived, its comments oldest first (the newest ones that fit, at most 500; commentsTruncated says some were left out), and the rev to send back when editing it. The title, body and comments are written by project members. Any role on the project reads.

    Annotations the server declares

    • title: Get page
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_project_settingsReads a board's project settings: client, status (active, on hold, completed, cancelled), budget (none, hours or money), default hourly rate in cents, whether time is billable by d…No findings

    Why it is in this group

    • The name "get_project_settings" says "get": a word for reading.
    Description, as the server wrote it
    Reads a board's project settings: client, status (active, on hold, completed, cancelled), budget (none, hours or money), default hourly rate in cents, whether time is billable by default, and start and due dates. A board without settings is not a project yet. Only the project owner reads the rate and the money budget.

    Annotations the server declares

    • title: Get project settings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_project_summarySummarizes a project: time tracked, billable time, the billable amount in cents, how much of the budget is used (ok, warning from 80%, over) and the hours of each person.No findings

    Why it is in this group

    • The name "get_project_summary" says "get": a word for reading.
    Description, as the server wrote it
    Summarizes a project: time tracked, billable time, the billable amount in cents, how much of the budget is used (ok, warning from 80%, over) and the hours of each person. The project owner reads all of it; any other member reads the project's totals and their own hours, without money.

    Annotations the server declares

    • title: Get project summary
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_receivables_agingShows what clients still owe on sent invoices, by how late it is: not yet due, 1-30 days, 31-60 and 61 or more days past due, per currency and per client (the biggest debt first), …No findings

    Why it is in this group

    • The name "get_receivables_aging" says "get": a word for reading.
    Description, as the server wrote it
    Shows what clients still owe on sent invoices, by how late it is: not yet due, 1-30 days, 31-60 and 61 or more days past due, per currency and per client (the biggest debt first), in cents.

    Annotations the server declares

    • title: Get receivables aging
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_running_timerReturns the user's running timer, if any: the project, the task, the note, when it started and how long it has run.No findings

    Why it is in this group

    • The name "get_running_timer" says "get": a word for reading.
    Description, as the server wrote it
    Returns the user's running timer, if any: the project, the task, the note, when it started and how long it has run.

    Annotations the server declares

    • title: Get running timer
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_taskReads one task in full: title, description, dates, completion, board and list, labels, assignees, checklists with their items, comments with reactions, attachments, links to other …No findings

    Why it is in this group

    • The name "get_task" says "get": a word for reading.
    Description, as the server wrote it
    Reads one task in full: title, description, dates, completion, board and list, labels, assignees, checklists with their items, comments with reactions, attachments, links to other tasks, custom field values, whether the user watches it and the user's pending reminders, with the id of each part.

    Annotations the server declares

    • title: Get task
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_task_portalReads what the client portal means for one task: whether it is marked visible to the client and, for the project owner, whether the portal is on, the conversation with the client o…No findings

    Why it is in this group

    • The name "get_task_portal" says "get": a word for reading.
    Description, as the server wrote it
    Reads what the client portal means for one task: whether it is marked visible to the client and, for the project owner, whether the portal is on, the conversation with the client on that task (up to 200 messages, the client's and the team's answers, oldest first) and how many are unread. The client's messages are text written by the client, who needs no account. Needs the editor role on the project.

    Annotations the server declares

    • title: Get task portal
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_task_timeReads the time of one task: its estimate, the time tracked so far, how close that is to the estimate (ok, warning from 80%, over), whether its time is billable, and its time entrie…No findings

    Why it is in this group

    • The name "get_task_time" says "get": a word for reading.
    Description, as the server wrote it
    Reads the time of one task: its estimate, the time tracked so far, how close that is to the estimate (ok, warning from 80%, over), whether its time is billable, and its time entries. The project owner reads everyone's entries; any other member only their own.

    Annotations the server declares

    • title: Get task time
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_week_timesheetReturns the user's own timesheet for one week, Monday to Sunday: a row per project and task with the minutes of each day, the totals per day and the week's total.No findings

    Why it is in this group

    • The name "get_week_timesheet" says "get": a word for reading.
    Description, as the server wrote it
    Returns the user's own timesheet for one week, Monday to Sunday: a row per project and task with the minutes of each day, the totals per day and the week's total.

    Annotations the server declares

    • title: Get week timesheet
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_workloadPlans the team's work: for each person, the time left on their open tasks with an estimate (the estimate minus the time tracked), placed in the week of each task's due date for the…No findings

    Why it is in this group

    • The name "get_workload" says "get": a word for reading.
    Description, as the server wrote it
    Plans the team's work: for each person, the time left on their open tasks with an estimate (the estimate minus the time tracked), placed in the week of each task's due date for the next six weeks, against their weekly capacity; overdue, later and undated work are listed apart. Says per week whether it is empty, ok, near (from 80%) or over capacity. The user sees the people on the projects they own and themselves. A Pro feature. Task titles are text typed by project members.

    Annotations the server declares

    • title: Get workload
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_activityLists a board's activity history, newest first: who did what, and when.No findings

    Why it is in this group

    • The name "list_activity" says "list": a word for reading.
    Description, as the server wrote it
    Lists a board's activity history, newest first: who did what, and when. How far back it goes follows the board owner's plan (Free: 40 entries, Pro: 200), as in the app.

    Annotations the server declares

    • title: List board activity
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_boardsLists the boards the user can access, each with its lists (ids and titles), the user's role on it (OWNER, EDITOR or VIEWER), whether it is archived and whether it is a favorite.No findings

    Why it is in this group

    • The name "list_boards" says "list": a word for reading.
    Description, as the server wrote it
    Lists the boards the user can access, each with its lists (ids and titles), the user's role on it (OWNER, EDITOR or VIEWER), whether it is archived and whether it is a favorite. These board and list ids identify boards and lists everywhere else in this server.

    Annotations the server declares

    • title: List boards
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_clientsLists the user's clients (the companies or people projects are done for) with their contact details, currency, default hourly rate in cents and how many projects use each.No findings

    Why it is in this group

    • The name "list_clients" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's clients (the companies or people projects are done for) with their contact details, currency, default hourly rate in cents and how many projects use each. The free plan includes 2 active clients.

    Annotations the server declares

    • title: List clients
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_embedsLists the live embeds of a board the user owns (the board shown inside another app of the user's).No findings

    Why it is in this group

    • The name "list_embeds" says "list": a word for reading.
    Description, as the server wrote it
    Lists the live embeds of a board the user owns (the board shown inside another app of the user's).

    Annotations the server declares

    • title: List embeds
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_expensesLists the expenses logged on a project (costs to bill back or to track), newest first, with the person, day, category, description, vendor, amount in cents, whether it is billable …No findings

    Why it is in this group

    • The name "list_expenses" says "list": a word for reading.
    Description, as the server wrote it
    Lists the expenses logged on a project (costs to bill back or to track), newest first, with the person, day, category, description, vendor, amount in cents, whether it is billable and whether it was already invoiced. The project owner reads everyone's, with the markup; any other member only their own, without it. Descriptions and vendors are text typed by project members.

    Annotations the server declares

    • title: List expenses
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_invoicesLists the user's invoices and estimates, newest first, 25 per page (up to 100): number, kind, status (draft, sent, paid, overdue, void, accepted, declined), client, project, dates,…No findings

    Why it is in this group

    • The name "list_invoices" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's invoices and estimates, newest first, 25 per page (up to 100): number, kind, status (draft, sent, paid, overdue, void, accepted, declined), client, project, dates, and total, paid and balance in cents. Also returns, per currency, what the matching invoices add up to, what was paid and what is still owed. Only the account's owner has invoices; other project members do not read them.

    Annotations the server declares

    • title: List invoices
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_my_tasksLists the user's tasks across every board, like the app's My tasks page: open cards assigned to the user plus dated cards on the user's own boards that nobody is assigned to, group…No findings

    Why it is in this group

    • The name "list_my_tasks" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's tasks across every board, like the app's My tasks page: open cards assigned to the user plus dated cards on the user's own boards that nobody is assigned to, grouped as overdue, today, next 7 days, later and no date.

    Annotations the server declares

    • title: List my tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_notificationsLists the user's notifications (mentions, assignments, comments on watched cards, due-date digests), newest first, with the unread count.No findings

    Why it is in this group

    • The name "list_notifications" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's notifications (mentions, assignments, comments on watched cards, due-date digests), newest first, with the unread count.

    Annotations the server declares

    • title: List notifications
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_pagesLists a project's notes or discussions, pinned first and then the most recently touched (a reply counts), up to 200: title, a snippet, who started it, comment count, pinned and arc…No findings

    Why it is in this group

    • The name "list_pages" says "list": a word for reading.
    Description, as the server wrote it
    Lists a project's notes or discussions, pinned first and then the most recently touched (a reply counts), up to 200: title, a snippet, who started it, comment count, pinned and archived. Searches titles and bodies. Titles and snippets are written by project members. Any role on the project reads.

    Annotations the server declares

    • title: List pages
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_project_filesLists every file and link attached to a project's tasks, newest first (up to 200): name, type (image, pdf, document, sheet, archive, media, link, other), MIME type, size, the task …No findings

    Why it is in this group

    • The name "list_project_files" says "list": a word for reading.
    Description, as the server wrote it
    Lists every file and link attached to a project's tasks, newest first (up to 200): name, type (image, pdf, document, sheet, archive, media, link, other), MIME type, size, the task and list it is on, and for a link its address. Narrow by type or by text in the file or task name; also returns how many there are of each type. Names and addresses are typed by project members. Any role on the project reads.

    Annotations the server declares

    • title: List project files
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_project_templatesLists the templates a new project can start from: the starters that come with Decknote (website project, marketing campaign, monthly retainer) and the ones the user saved, each wit…No findings

    Why it is in this group

    • The name "list_project_templates" says "list": a word for reading.
    Description, as the server wrote it
    Lists the templates a new project can start from: the starters that come with Decknote (website project, marketing campaign, monthly retainer) and the ones the user saved, each with its lists, number of tasks, total estimate, whether its tasks carry relative due dates, and a note when a saved one cannot be used. The free plan keeps 1 saved template; the starters cost no place.

    Annotations the server declares

    • title: List project templates
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_projectsLists the projects the user can see (boards with project settings): client, status (active, on hold, completed, cancelled), dates, hours tracked, the budget and how much of it is u…No findings

    Why it is in this group

    • The name "list_projects" says "list": a word for reading.
    Description, as the server wrote it
    Lists the projects the user can see (boards with project settings): client, status (active, on hold, completed, cancelled), dates, hours tracked, the budget and how much of it is used (ok, warning from 80%, over), and who worked on it. On a project the user owns the hours are everyone's and the amounts count; on one the user only belongs to, only their own hours and no money. Also lists the boards the user owns that could become projects, and the sample project if there is one.

    Annotations the server declares

    • title: List projects
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_remindersLists the user's pending reminders, soonest first, optionally on one board, with each task's title and due date.No findings

    Why it is in this group

    • The name "list_reminders" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's pending reminders, soonest first, optionally on one board, with each task's title and due date.

    Annotations the server declares

    • title: List reminders
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_time_entriesLists the time entries of a project, newest first, with who logged each, the task, the day, the minutes and whether it is billable.No findings

    Why it is in this group

    • The name "list_time_entries" says "list": a word for reading.
    Description, as the server wrote it
    Lists the time entries of a project, newest first, with who logged each, the task, the day, the minutes and whether it is billable. The project owner reads everyone's entries, with their hourly rates in cents; any other member reads only their own, without rates. Also returns the total minutes of everything the filters match.

    Annotations the server declares

    • title: List time entries
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_time_importsLists the user's time imports, newest first (the last 30): the source (toggl, harvest, clockify, generic), the file name, whether it is done or was undone, how many entries and how…No findings

    Why it is in this group

    • The name "list_time_imports" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's time imports, newest first (the last 30): the source (toggl, harvest, clockify, generic), the file name, whether it is done or was undone, how many entries and how many minutes it brought, how many rows were skipped as duplicates or failed, and when. The sample project is not listed.

    Annotations the server declares

    • title: List time imports
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_unbilled_workLists what a project could still bill: its finished billable time entries (person, task, day, minutes and the rate each will be priced at, in cents) and its billable expenses not y…No findings

    Why it is in this group

    • The name "list_unbilled_work" says "list": a word for reading.
    Description, as the server wrote it
    Lists what a project could still bill: its finished billable time entries (person, task, day, minutes and the rate each will be priced at, in cents) and its billable expenses not yet on an invoice. Only the project owner. Expense descriptions and task titles are text typed by project members.

    Annotations the server declares

    • title: List unbilled work
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • overviewSnapshot of the user's Decknote account: plan and limits, recent boards, what needs attention (overdue and due-today tasks, unread notifications, upcoming reminders), sharing (pend…No findings

    Why it is in this group

    • The description's first verb is "snapshot": a word for reading.
    Description, as the server wrote it
    Snapshot of the user's Decknote account: plan and limits, recent boards, what needs attention (overdue and due-today tasks, unread notifications, upcoming reminders), sharing (pending invitations, shared boards, public links, live embeds) and suggested next steps. Useful at the start of a conversation about the user's work.

    Annotations the server declares

    • title: Account overview
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • preview_invoice_from_workShows the lines and totals an invoice made from a project's unbilled work would have, without creating anything or taking any hours: finished billable time and billable expenses, g…No findings

    Why it is in this group

    • The name "preview_invoice_from_work" says "preview": a word for reading.
    Description, as the server wrote it
    Shows the lines and totals an invoice made from a project's unbilled work would have, without creating anything or taking any hours: finished billable time and billable expenses, grouped per task (default), person, day or one line in total, priced at the rate each entry was logged with (an entry with no rate at all is priced at zero and counted). Only the project owner.

    Annotations the server declares

    • title: Preview invoice from work
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • preview_time_importReads a CSV of hours (Toggl, Harvest, Clockify or any CSV with a date and a duration or start and end times) and says what importing it would do, without writing anything: the rows…No findings

    Why it is in this group

    • The name "preview_time_import" says "preview": a word for reading.
    Description, as the server wrote it
    Reads a CSV of hours (Toggl, Harvest, Clockify or any CSV with a date and a duration or start and end times) and says what importing it would do, without writing anything: the rows that can be imported and their total time, the clients, projects and tasks that would be created, duplicates of an earlier import that would be skipped, the rows that cannot be read with their row numbers, who the time would be logged as, and whether the free plan's limits block it. Also returns the settings it used (guessed from the headers unless given) and the file's columns. The CSV travels as text, up to 200,000 characters; the Import page of the app takes files up to 8 MB. Names and cells from the file are text written by others.

    Annotations the server declares

    • title: Preview time import
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_tasksSearches the user's tasks (cards) across boards by free text in title and description, and by board, list, status (open, completed, all or archived) and due date.No findings

    Why it is in this group

    • The name "search_tasks" says "search": a word for reading.
    Description, as the server wrote it
    Searches the user's tasks (cards) across boards by free text in title and description, and by board, list, status (open, completed, all or archived) and due date. Answers questions like what is still open, what was noted about something, or what is due soon.

    Annotations the server declares

    • title: Search tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • show_boardShows a board as an interactive kanban that updates live while the conversation is open: lists and cards with labels, due dates, checklist progress and assignees, where the user ca…No findings

    Why it is in this group

    • The name "show_board" says "show": a word for reading.
    Description, as the server wrote it
    Shows a board as an interactive kanban that updates live while the conversation is open: lists and cards with labels, due dates, checklist progress and assignees, where the user can drag cards between lists, complete them and add new ones. Without boardId it shows the board the user changed most recently. Clients that can't display it get the same board as JSON.

    Annotations the server declares

    • title: Show board
    • 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 decknote https://decknote.app/api/v1/mcp --header 'Authorization: <your-authorization>'

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__decknote__overview",
      "mcp__decknote__list_boards",
      "mcp__decknote__search_tasks",
      "mcp__decknote__get_task",
      "mcp__decknote__list_reminders",
      "mcp__decknote__search",
      "mcp__decknote__fetch",
      "mcp__decknote__get_board",
      "mcp__decknote__list_activity",
      "mcp__decknote__list_embeds",
      "mcp__decknote__list_my_tasks",
      "mcp__decknote__list_notifications",
      "mcp__decknote__get_account",
      "mcp__decknote__api_read",
      "mcp__decknote__show_board",
      "mcp__decknote__get_board_live_url",
      "mcp__decknote__get_running_timer",
      "mcp__decknote__list_time_entries",
      "mcp__decknote__get_task_time",
      "mcp__decknote__list_clients",
      "mcp__decknote__get_project_settings",
      "mcp__decknote__get_project_summary",
      "mcp__decknote__get_week_timesheet",
      "mcp__decknote__get_billing_profile",
      "mcp__decknote__list_expenses",
      "mcp__decknote__list_invoices",
      "mcp__decknote__get_invoice",
      "mcp__decknote__get_receivables_aging",
      "mcp__decknote__get_billing_report",
      "mcp__decknote__list_unbilled_work",
      "mcp__decknote__preview_invoice_from_work",
      "mcp__decknote__get_invoice_email_draft",
      "mcp__decknote__get_client_portal",
      "mcp__decknote__get_task_portal",
      "mcp__decknote__list_projects",
      "mcp__decknote__get_workload",
      "mcp__decknote__list_project_templates",
      "mcp__decknote__list_pages",
      "mcp__decknote__get_page",
      "mcp__decknote__list_project_files",
      "mcp__decknote__preview_time_import",
      "mcp__decknote__list_time_imports"
    ],
    "ask": [
      "mcp__decknote__export_data",
      "mcp__decknote__get_time_report",
      "mcp__decknote__export_time_report",
      "mcp__decknote__export_invoices_csv"
    ],
    "deny": [
      "mcp__decknote__create_board",
      "mcp__decknote__create_list",
      "mcp__decknote__create_task",
      "mcp__decknote__update_task",
      "mcp__decknote__complete_task",
      "mcp__decknote__reopen_task",
      "mcp__decknote__archive_task",
      "mcp__decknote__move_task",
      "mcp__decknote__add_comment",
      "mcp__decknote__add_reminder",
      "mcp__decknote__remove_reminder",
      "mcp__decknote__update_board",
      "mcp__decknote__set_board_preferences",
      "mcp__decknote__duplicate_board",
      "mcp__decknote__archive_board",
      "mcp__decknote__restore_board",
      "mcp__decknote__delete_board",
      "mcp__decknote__import_trello_board",
      "mcp__decknote__share_board",
      "mcp__decknote__update_member",
      "mcp__decknote__remove_member",
      "mcp__decknote__leave_board",
      "mcp__decknote__transfer_board",
      "mcp__decknote__set_public_link",
      "mcp__decknote__create_embed",
      "mcp__decknote__revoke_embed",
      "mcp__decknote__update_list",
      "mcp__decknote__duplicate_list",
      "mcp__decknote__sort_list",
      "mcp__decknote__delete_list",
      "mcp__decknote__create_label",
      "mcp__decknote__update_label",
      "mcp__decknote__delete_label",
      "mcp__decknote__create_custom_field",
      "mcp__decknote__update_custom_field",
      "mcp__decknote__delete_custom_field",
      "mcp__decknote__create_saved_view",
      "mcp__decknote__delete_saved_view",
      "mcp__decknote__create_automation",
      "mcp__decknote__set_automation_enabled",
      "mcp__decknote__delete_automation",
      "mcp__decknote__duplicate_task",
      "mcp__decknote__restore_task",
      "mcp__decknote__delete_task",
      "mcp__decknote__set_task_labels",
      "mcp__decknote__set_task_assignees",
      "mcp__decknote__watch_task",
      "mcp__decknote__set_task_field",
      "mcp__decknote__link_tasks",
      "mcp__decknote__unlink_tasks",
      "mcp__decknote__bulk_tasks",
      "mcp__decknote__create_task_from_template",
      "mcp__decknote__save_task_as_template",
      "mcp__decknote__delete_card_template",
      "mcp__decknote__edit_comment",
      "mcp__decknote__delete_comment",
      "mcp__decknote__react_to_comment",
      "mcp__decknote__add_checklist",
      "mcp__decknote__update_checklist",
      "mcp__decknote__delete_checklist",
      "mcp__decknote__add_checklist_items",
      "mcp__decknote__update_checklist_item",
      "mcp__decknote__delete_checklist_item",
      "mcp__decknote__add_attachment",
      "mcp__decknote__rename_attachment",
      "mcp__decknote__delete_attachment",
      "mcp__decknote__mark_notifications_read",
      "mcp__decknote__update_account",
      "mcp__decknote__revoke_access",
      "mcp__decknote__start_pro_checkout",
      "mcp__decknote__open_billing_portal",
      "mcp__decknote__api_create",
      "mcp__decknote__start_timer",
      "mcp__decknote__stop_timer",
      "mcp__decknote__log_time",
      "mcp__decknote__update_time_entry",
      "mcp__decknote__delete_time_entry",
      "mcp__decknote__set_task_estimate",
      "mcp__decknote__set_task_billable",
      "mcp__decknote__create_client",
      "mcp__decknote__update_client",
      "mcp__decknote__archive_client",
      "mcp__decknote__restore_client",
      "mcp__decknote__update_project_settings",
      "mcp__decknote__update_billing_profile",
      "mcp__decknote__create_expense",
      "mcp__decknote__update_expense",
      "mcp__decknote__delete_expense",
      "mcp__decknote__create_invoice",
      "mcp__decknote__create_invoice_from_work",
      "mcp__decknote__update_invoice",
      "mcp__decknote__send_invoice",
      "mcp__decknote__email_invoice",
      "mcp__decknote__regenerate_invoice_link",
      "mcp__decknote__revoke_invoice_link",
      "mcp__decknote__void_invoice",
      "mcp__decknote__delete_invoice_draft",
      "mcp__decknote__record_invoice_payment",
      "mcp__decknote__remove_invoice_payment",
      "mcp__decknote__duplicate_invoice",
      "mcp__decknote__convert_estimate_to_invoice",
      "mcp__decknote__record_estimate_answer",
      "mcp__decknote__update_client_portal",
      "mcp__decknote__regenerate_client_portal_link",
      "mcp__decknote__set_task_visible_to_client",
      "mcp__decknote__reply_to_client",
      "mcp__decknote__mark_client_comments_read",
      "mcp__decknote__delete_client_comment",
      "mcp__decknote__create_project",
      "mcp__decknote__set_my_weekly_capacity",
      "mcp__decknote__save_project_as_template",
      "mcp__decknote__create_project_from_template",
      "mcp__decknote__rename_project_template",
      "mcp__decknote__delete_project_template",
      "mcp__decknote__create_page",
      "mcp__decknote__update_page",
      "mcp__decknote__set_page_pinned",
      "mcp__decknote__set_page_archived",
      "mcp__decknote__delete_page",
      "mcp__decknote__add_page_comment",
      "mcp__decknote__edit_page_comment",
      "mcp__decknote__delete_page_comment",
      "mcp__decknote__import_time_csv",
      "mcp__decknote__undo_time_import",
      "mcp__decknote__create_sample_project",
      "mcp__decknote__delete_sample_project"
    ]
  }
}

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 decknote. Review it before you use it.