Skip to content

workload.zero

de.workloadzero/mcpworkloadzero.destreamable-httpv1.0.3Scanned

Back office, projects, hiring and CRM in one suite. Claude's work stays a draft until you approve.

149 tools: 30 can delete or cancel things, 1 do something that can't be undone, 60 change things and 58 only read.

Tools: 30 delete, 1 irreversible, 60 write, 58 read.
  • Reads private data · 19
  • Reads text others write · 18
  • Can send data out · 16
  • 2 findings

Anlyon alternative

91 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

149 tools

Deletes or cancels 30Claude Code: deny
  • convert_quote_to_invoiceConvert an ACCEPTED quote into a draft invoice (positions 1:1).No findings

    Why it is in this group

    • The name "convert_quote_to_invoice" says "convert": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Convert an ACCEPTED quote into a draft invoice (positions 1:1).

    Annotations the server declares

    • title: Convert quote to invoice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_absenceWithdraw an absence request or delete an absence.No findings

    Why it is in this group

    • The name "delete_absence" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Withdraw an absence request or delete an absence. The team calendar updates immediately.

    Annotations the server declares

    • title: Delete absence
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_companyDelete a CRM company (it is hidden, its contacts stay).No findings

    Why it is in this group

    • The name "delete_company" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a CRM company (it is hidden, its contacts stay).

    Annotations the server declares

    • title: Delete company
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_contactDelete a CRM contact.No findings

    Why it is in this group

    • The name "delete_contact" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a CRM contact. Before deleting for GDPR reasons, add the address to the suppression list.

    Annotations the server declares

    • title: Delete contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_dealDelete a deal (it is hidden from lists and reports, its activities stay).No findings

    Why it is in this group

    • The name "delete_deal" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a deal (it is hidden from lists and reports, its activities stay).

    Annotations the server declares

    • title: Delete deal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_fileMove a file or folder to the trash (it can be restored in the app).No findings

    Why it is in this group

    • The name "delete_file" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Move a file or folder to the trash (it can be restored in the app).

    Annotations the server declares

    • title: Delete file
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_goalDelete a goal and its checklist.No findings

    Why it is in this group

    • The name "delete_goal" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a goal and its checklist. Linked tasks and time entries stay.

    Annotations the server declares

    • title: Delete goal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_invoiceDelete a draft invoice.No findings

    Why it is in this group

    • The name "delete_invoice" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a draft invoice. Finalized invoices cannot be deleted.

    Annotations the server declares

    • title: Delete draft invoice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_leadDelete a lead that is not converted.No findings

    Why it is in this group

    • The name "delete_lead" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a lead that is not converted.

    Annotations the server declares

    • title: Delete lead
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_messageDelete one of your chat messages for all participants.No findings

    Why it is in this group

    • The name "delete_message" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete one of your chat messages for all participants.

    Annotations the server declares

    • title: Delete chat message
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_pipelineDelete a sales pipeline.No findings

    Why it is in this group

    • The name "delete_pipeline" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a sales pipeline. Move or close its deals first.

    Annotations the server declares

    • title: Delete pipeline
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_projectDelete a project you created.No findings

    Why it is in this group

    • The name "delete_project" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database.

    Annotations the server declares

    • title: Delete project
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_quoteDelete a quote that has not been sent yet.No findings

    Why it is in this group

    • The name "delete_quote" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a quote that has not been sent yet. Sent quotes stay for the record.

    Annotations the server declares

    • title: Delete quote
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_sales_activityDelete a sales activity from the deal and contact timeline.No findings

    Why it is in this group

    • The name "delete_sales_activity" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a sales activity from the deal and contact timeline.

    Annotations the server declares

    • title: Delete sales activity
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_taskDelete a task (admin, project manager or project lead).No findings

    Why it is in this group

    • The name "delete_task" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task.

    Annotations the server declares

    • title: Delete task
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_task_commentDelete a comment (your own, or any as admin, project manager or project lead).No findings

    Why it is in this group

    • The name "delete_task_comment" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a comment (your own, or any as admin, project manager or project lead).

    Annotations the server declares

    • title: Delete task comment
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_time_entryDelete one of your time entries.No findings

    Why it is in this group

    • The name "delete_time_entry" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted.

    Annotations the server declares

    • title: Delete time entry
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • discard_timerDiscard the running timer without booking any time.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
    Discard the running timer without booking any time.

    Annotations the server declares

    • title: Discard timer
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • edit_messageEdit one of your chat messages.Reads text others writeCan send data outNo findings

    Why it is in this group

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

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "edit_message" says "edit" and "message": it writes something other people read.
    Description, as the server wrote it
    Edit one of your chat messages. Participants see the new text marked as edited.

    Annotations the server declares

    • title: Edit chat message
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • mark_deal_lostMark a deal as lost with a reason, e.g.No findings

    Why it is in this group

    • The name "mark_deal_lost" says "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Mark a deal as lost with a reason, e.g. "Budget moved to 2027".

    Annotations the server declares

    • title: Mark deal lost
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_project_memberRemove a team member from a project.No findings

    Why it is in this group

    • The name "remove_project_member" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove a team member from a project. Their tasks stay assigned until you reassign them.

    Annotations the server declares

    • title: Remove project member
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_task_attachmentRemove an attachment from a task and move the file to the trash (your own attachment, or any as admin, project manager or project lead).No findings

    Why it is in this group

    • The name "remove_task_attachment" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove an attachment from a task and move the file to the trash (your own attachment, or any as admin, project manager or project lead).

    Annotations the server declares

    • title: Remove task attachment
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • review_absenceApprove or reject an absence request (admin or manager).No findings

    Why it is in this group

    • The description's first verb is "approve": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Approve or reject an absence request (admin or manager). The employee sees the decision.

    Annotations the server declares

    • title: Approve or reject absence
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • send_direct_messageSend a direct message to a person (user id from list_users).Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "send_direct_message" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "send_direct_message" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Send a direct message to a person (user id from list_users). Opens the direct chat if there is none yet.

    Annotations the server declares

    • title: Send direct message
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_messageSend a message in a chat.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "send_message" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "send_message" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Send a message in a chat. The participants see it immediately.

    Annotations the server declares

    • title: Send chat message
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_quoteSend a quote to the client by email.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "send_quote" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "send_quote" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Send a quote to the client by email. This ONLY works after the user approved the quote for sending in the app. There is intentionally no tool to grant that approval; sending stays under human control.

    Annotations the server declares

    • title: Send quote to client
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • unassign_me_from_taskRemove yourself from the assignees of a task.1 finding

    Why it is in this group

    • The name "unassign_me_from_task" says "unassign": a word for a change.
    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "unassign_me_from_task" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unassign_me_from_task" says "unassign": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Remove yourself from the assignees of a task.

    Annotations the server declares

    • title: Unassign me from task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_pipelineUpdate a sales pipeline: name, stages (replaces the whole list) or default flag.No findings

    Why it is in this group

    • The name "update_pipeline" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Update a sales pipeline: name, stages (replaces the whole list) or default flag.

    Annotations the server declares

    • title: Update pipeline
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • record_invoice_paymentRecord a (partial) payment on an invoice.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.
    Description, as the server wrote it
    Record a (partial) payment on an invoice. Example: amount 1190, paidAt "2026-11-04".

    Annotations the server declares

    • title: Record invoice payment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Changes things 60Claude Code: ask
  • add_project_memberAdd a team member to a project (admin or project manager).No findings

    Why it is in this group

    • The name "add_project_member" says "add": a word for a change.
    Description, as the server wrote it
    Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members.

    Annotations the server declares

    • title: Add project member
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • add_suppressionAdd an email address or a whole domain to the suppression list, e.g.No findings

    Why it is in this group

    • The name "add_suppression" says "add": a word for a change.
    Description, as the server wrote it
    Add an email address or a whole domain to the suppression list, e.g. after an unsubscribe, an objection (GDPR Art. 21), an erasure request (Art. 17) or an access request (Art. 15).

    Annotations the server declares

    • title: Add to suppression list
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • add_task_commentAdd a comment to a task, optionally with images (each from an https URL or base64).Can send data outNo findings

    Why it is in this group

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

    What it can reach

    • outboundThe name "add_task_comment" says "add" and "comment": it writes something other people read.
    Description, as the server wrote it
    Add a comment to a task, optionally with images (each from an https URL or base64). Images are stored in the project files under tasks/<task number>/.

    Annotations the server declares

    • title: Add task comment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • assign_task_to_meAdd yourself to the assignees of a task.No findings

    Why it is in this group

    • The name "assign_task_to_me" says "assign": a word for a change.
    Description, as the server wrote it
    Add yourself to the assignees of a task.

    Annotations the server declares

    • title: Assign task to me
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • attach_file_to_taskAttach an image or file to a task.Reads text others writeNo findings

    Why it is in this group

    • The name "attach_file_to_task" says "attach": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Attach an image or file to a task. Give sourceUrl (https) or base64 + fileName, or fileItemId of a file already in workload.zero. The file is stored in the project files under tasks/<task number>/ like in the app; returns a download link.

    Annotations the server declares

    • title: Attach file to task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • check_goal_itemTick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows).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.
    Description, as the server wrote it
    Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows).

    Annotations the server declares

    • title: Check goal item
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_suppressionCheck whether email addresses are on the suppression list (do-not-contact).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
    Check whether email addresses are on the suppression list (do-not-contact). ALWAYS call this before sending any outreach email; never email an address reported as suppressed.

    Annotations the server declares

    • title: Check suppression list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • complete_goalMark a goal as completed.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a goal as completed. Checklist items keep their own state.

    Annotations the server declares

    • title: Complete goal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • complete_sales_activityMark a sales activity (call, email, meeting, task) as done.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a sales activity (call, email, meeting, task) as done.

    Annotations the server declares

    • title: Complete sales activity
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • convert_dealConvert a deal by ref code (idempotent): stage converted, status won.No findings

    Why it is in this group

    • The name "convert_deal" says "convert": a word for a change.
    Description, as the server wrote it
    Convert a deal by ref code (idempotent): stage converted, status won.

    Annotations the server declares

    • title: Convert deal by ref
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • convert_leadConvert a lead into a contact (and company), optionally with a new deal.No findings

    Why it is in this group

    • The name "convert_lead" says "convert": a word for a change.
    Description, as the server wrote it
    Convert a lead into a contact (and company), optionally with a new deal.

    Annotations the server declares

    • title: Convert lead
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_chatCreate a group chat with people (user ids from list_users), optionally tied to projects.No findings

    Why it is in this group

    • The name "create_chat" says "create": a word for a change.
    Description, as the server wrote it
    Create a group chat with people (user ids from list_users), optionally tied to projects.

    Annotations the server declares

    • title: Create group chat
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_clientCreate a project client (admin or project manager).Can send data outNo findings

    Why it is in this group

    • The name "create_client" says "create": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Create a project client (admin or project manager).

    Annotations the server declares

    • title: Create client
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_dealCreate a deal.No findings

    Why it is in this group

    • The name "create_deal" says "create": a word for a change.
    Description, as the server wrote it
    Create a deal. Example: title "Website relaunch Acme", value 24000, stage "proposal", companyId, contactIds.

    Annotations the server declares

    • title: Create deal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_folderCreate a folder in a space, optionally inside another folder.No findings

    Why it is in this group

    • The name "create_folder" says "create": a word for a change.
    Description, as the server wrote it
    Create a folder in a space, optionally inside another folder.

    Annotations the server declares

    • title: Create folder
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_goalCreate a daily or weekly goal, optionally linked to a task or project, with a checklist; shown in workload.zero as created by an agent.No findings

    Why it is in this group

    • The name "create_goal" says "create": a word for a change.
    Description, as the server wrote it
    Create a daily or weekly goal, optionally linked to a task or project, with a checklist; shown in workload.zero as created by an agent. Example: title "Ship invoice export", checklist [{"label": "Write tests"}].

    Annotations the server declares

    • title: Create goal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_invoiceCreate a draft invoice by hand.No findings

    Why it is in this group

    • The name "create_invoice" says "create": a word for a change.
    Description, as the server wrote it
    Create a draft invoice by hand. It stays a draft: finalizing and sending happen in the app. Example: invoiceDate "2026-11-04", billingClientId from list_billing_clients, lineItems [{position: 1, description: "Consulting", quantity: 8, unit: "h", unitPrice: 95, vatRate: 19}].

    Annotations the server declares

    • title: Create draft invoice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_invoice_from_timeCreate a draft invoice from the unbilled time entries of a project in a period.No findings

    Why it is in this group

    • The name "create_invoice_from_time" says "create": a word for a change.
    Description, as the server wrote it
    Create a draft invoice from the unbilled time entries of a project in a period.

    Annotations the server declares

    • title: Create invoice from time
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_leadCreate a lead (a person not yet qualified), e.g.Can send data outNo findings

    Why it is in this group

    • The name "create_lead" says "create": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Create a lead (a person not yet qualified), e.g. from an event or a website form.

    Annotations the server declares

    • title: Create lead
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_pipelineCreate a sales pipeline with its stages.No findings

    Why it is in this group

    • The name "create_pipeline" says "create": a word for a change.
    Description, as the server wrote it
    Create a sales pipeline with its stages.

    Annotations the server declares

    • title: Create pipeline
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_projectCreate a project.No findings

    Why it is in this group

    • The name "create_project" says "create": a word for a change.
    Description, as the server wrote it
    Create a project. clientId comes from list_clients (or create_client). Example: title "Website relaunch", projectCode "WEB", duration {startDate: "2026-11-01", endDate: "2027-03-31"}, budget {hourlyRate: 95, currency: "EUR"}.

    Annotations the server declares

    • title: Create project
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_quoteCreate a quote as a DRAFT.No findings

    Why it is in this group

    • The name "create_quote" says "create": a word for a change.
    Description, as the server wrote it
    Create a quote as a DRAFT. Example: date "2026-11-04", billingClientId from list_billing_clients, positions [{description: "Design workshop", quantity: 2, unit: "days", unitPriceNet: 1200}]. Use estimate_quote first to price a scope. The quote is never sent automatically; sending needs a human approval in the app. The legacy `data` JSON string (document field names) is still accepted.

    Annotations the server declares

    • title: Create draft quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_sales_activityLog or schedule a sales activity.No findings

    Why it is in this group

    • The name "create_sales_activity" says "create": a word for a change.
    Description, as the server wrote it
    Log or schedule a sales activity. Example: type "call", subject "Follow-up on proposal", contactId, dealId, scheduledAt "2026-11-06T10:00:00Z".

    Annotations the server declares

    • title: Create sales activity
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_taskCreate a task (shown in workload.zero as created by an agent).No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    Description, as the server wrote it
    Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title "Fix login redirect", priority "high", assignedTo [user or team member id], deadline {startDateTime: "2026-11-10T09:00:00Z", endDateTime: "2026-11-14T17:00:00Z"}, maxHours 6.

    Annotations the server declares

    • title: Create task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • estimate_quoteEstimate a quote from a scope description.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
    Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparable past projects, standard rate). Add your own 'free-scope' variant from the context, then present all variants with totals so the user can pick.

    Annotations the server declares

    • title: Estimate quote
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • log_timeLog time on a project, optionally for a task.1 finding

    Why it is in this group

    • The name "log_time" says "log": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "log_time" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

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

      What this check looks for
    Description, as the server wrote it
    Log time on a project, optionally for a task. Example: projectId, taskId, date "2026-11-04", hours 1.5, description "Code review". With startTime/endTime (HH:mm) the entry shows the time span.

    Annotations the server declares

    • title: Log time
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • mark_chat_readMark all messages of a chat as read; resets its unread count.Can send data outNo findings

    Why it is in this group

    • The name "mark_chat_read" says "mark": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.chatId): what the tool writes goes there.
    Description, as the server wrote it
    Mark all messages of a chat as read; resets its unread count.

    Annotations the server declares

    • title: Mark chat as read
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • mark_deal_wonMark a deal as won; status won, stage closed_won, counts in reports.No findings

    Why it is in this group

    • The name "mark_deal_won" says "mark": a word for a change.
    Description, as the server wrote it
    Mark a deal as won; status won, stage closed_won, counts in reports.

    Annotations the server declares

    • title: Mark deal won
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • mark_gdpr_answeredMark the GDPR request (Art.No findings

    Why it is in this group

    • The name "mark_gdpr_answered" says "mark": a word for a change.
    Description, as the server wrote it
    Mark the GDPR request (Art. 15/17/21) of a suppression list entry as answered.

    Annotations the server declares

    • title: Mark GDPR request answered
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • mark_notifications_readMark one notification as read, or all of them when notificationId is left out.No findings

    Why it is in this group

    • The name "mark_notifications_read" says "mark": a word for a change.
    Description, as the server wrote it
    Mark one notification as read, or all of them when notificationId is left out.

    Annotations the server declares

    • title: Mark notifications as read
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • move_deal_stageMove a deal to another pipeline stage, e.g.No findings

    Why it is in this group

    • The name "move_deal_stage" says "move": a word for a change.
    Description, as the server wrote it
    Move a deal to another pipeline stage, e.g. "negotiation".

    Annotations the server declares

    • title: Move deal stage
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • move_task_on_boardMove a task to a board column (status) and position (0 = top).No findings

    Why it is in this group

    • The name "move_task_on_board" says "move": a word for a change.
    Description, as the server wrote it
    Move a task to a board column (status) and position (0 = top).

    Annotations the server declares

    • title: Move task on board
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • qualify_leadMark a lead as qualified, ready to convert into a contact and deal.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a lead as qualified, ready to convert into a contact and deal.

    Annotations the server declares

    • title: Qualify lead
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • request_absenceRequest an absence.No findings

    Why it is in this group

    • The name "request_absence" says "request": a word for a change.
    Description, as the server wrote it
    Request an absence. Example: type "vacation", startDate "2026-12-22", endDate "2026-12-31". Partial days: startTime/endTime or hours.

    Annotations the server declares

    • title: Request absence
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_taskRestore a deleted task.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.
    Description, as the server wrote it
    Restore a deleted task. Takes the Mongo id from list_deleted_tasks.

    Annotations the server declares

    • title: Restore task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_default_pipelineSet a sales pipeline as the default for new deals.No findings

    Why it is in this group

    • The name "set_default_pipeline" says "set": a word for a change.
    Description, as the server wrote it
    Set a sales pipeline as the default for new deals.

    Annotations the server declares

    • title: Set default pipeline
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • start_timerStart the running timer for a project (and task).No findings

    Why it is in this group

    • The name "start_timer" says "start": a word for a change.
    Description, as the server wrote it
    Start the running timer for a project (and task). Stop it with stop_timer to book the time.

    Annotations the server declares

    • title: Start timer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • stop_timerStop the running timer and book the time as a time entry.No findings

    Why it is in this group

    • The name "stop_timer" says "stop": a word for a change.
    Description, as the server wrote it
    Stop the running timer and book the time as a time entry.

    Annotations the server declares

    • title: Stop timer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • toggle_task_comment_reactionAdd your emoji reaction to a comment, or remove it if you already reacted with that emoji.Can send data outNo findings

    Why it is in this group

    • The name "toggle_task_comment_reaction" says "toggle": a word for a change.

    What it can reach

    • outboundThe name "toggle_task_comment_reaction" says "toggle" and "comment": it writes something other people read.
    Description, as the server wrote it
    Add your emoji reaction to a comment, or remove it if you already reacted with that emoji.

    Annotations the server declares

    • title: Toggle comment reaction
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • update_absenceChange an absence request (dates, type, reason).No findings

    Why it is in this group

    • The name "update_absence" says "update": a word for a change.
    Description, as the server wrote it
    Change an absence request (dates, type, reason). Give only the fields to change.

    Annotations the server declares

    • title: Update absence
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_companyUpdate a CRM company by id, e.g.Can send data outNo findings

    Why it is in this group

    • The name "update_company" says "update": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Update a CRM company by id, e.g. to rename it. Give only the fields to change.

    Annotations the server declares

    • title: Update company
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_contactUpdate a CRM contact by id, e.g.Can send data outNo findings

    Why it is in this group

    • The name "update_contact" says "update": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Update a CRM contact by id, e.g. to change the email address. Give only the fields to change.

    Annotations the server declares

    • title: Update contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_dealUpdate a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company.No findings

    Why it is in this group

    • The name "update_deal" says "update": a word for a change.
    Description, as the server wrote it
    Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company.

    Annotations the server declares

    • title: Update deal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_goalUpdate a goal: date, title, task, project, color, time slot or checklist.No findings

    Why it is in this group

    • The name "update_goal" says "update": a word for a change.
    Description, as the server wrote it
    Update a goal: date, title, task, project, color, time slot or checklist. Give only the fields to change. The legacy `updates` JSON string is still accepted.

    Annotations the server declares

    • title: Update goal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_invoiceUpdate a draft invoice.No findings

    Why it is in this group

    • The name "update_invoice" says "update": a word for a change.
    Description, as the server wrote it
    Update a draft invoice. Give only the fields to change; lineItems replaces the whole list. Finalized invoices cannot be changed.

    Annotations the server declares

    • title: Update draft invoice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_leadUpdate a lead, e.g.Can send data outNo findings

    Why it is in this group

    • The name "update_lead" says "update": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Update a lead, e.g. its status. Give only the fields to change.

    Annotations the server declares

    • title: Update lead
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_my_profileUpdate your own profile.No findings

    Why it is in this group

    • The name "update_my_profile" says "update": a word for a change.
    Description, as the server wrote it
    Update your own profile. Pass the fields to change as a JSON object string.

    Annotations the server declares

    • title: Update my profile
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_projectUpdate a project.No findings

    Why it is in this group

    • The name "update_project" says "update": a word for a change.
    Description, as the server wrote it
    Update a project. Give only the fields to change, e.g. status "on_hold" or a new end date in duration. The legacy `updates` JSON string is still accepted.

    Annotations the server declares

    • title: Update project
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_project_memberChange role, weekly hours, capacity or permissions of a project member.No findings

    Why it is in this group

    • The name "update_project_member" says "update": a word for a change.
    Description, as the server wrote it
    Change role, weekly hours, capacity or permissions of a project member.

    Annotations the server declares

    • title: Update project member
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_quoteUpdate a draft quote.No findings

    Why it is in this group

    • The name "update_quote" says "update": a word for a change.
    Description, as the server wrote it
    Update a draft quote. Give only the fields to change; positions replaces the whole list.

    Annotations the server declares

    • title: Update draft quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_sales_activityUpdate a sales activity.No findings

    Why it is in this group

    • The name "update_sales_activity" says "update": a word for a change.
    Description, as the server wrote it
    Update a sales activity. Give only the fields to change.

    Annotations the server declares

    • title: Update sales activity
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_taskUpdate a task.No findings

    Why it is in this group

    • The name "update_task" says "update": a word for a change.
    Description, as the server wrote it
    Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linkedIssue, links (replaces), parentTaskId. Archive with status "archived". The legacy `updates` JSON string is still accepted.

    Annotations the server declares

    • title: Update task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_task_commentEdit the text of one of your own comments; it is marked as edited.Can send data outNo findings

    Why it is in this group

    • The name "update_task_comment" says "update": a word for a change.

    What it can reach

    • outboundThe name "update_task_comment" says "update" and "comment": it writes something other people read.
    Description, as the server wrote it
    Edit the text of one of your own comments; it is marked as edited. Comments of others can only be deleted (by admins, project managers and project leads), not edited.

    Annotations the server declares

    • title: Edit task comment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_time_entryChange a time entry (hours, date, description, task, start/end time, billable).No findings

    Why it is in this group

    • The name "update_time_entry" says "update": a word for a change.
    Description, as the server wrote it
    Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change.

    Annotations the server declares

    • title: Update time entry
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • upload_fileUpload a file into a space (optionally into a folder) from an https URL or base64.Reads text others writeNo findings

    Why it is in this group

    • The name "upload_file" says "upload": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Upload a file into a space (optionally into a folder) from an https URL or base64. Allowed: images (png, jpeg, gif, webp, heic), pdf, txt, md, csv, json, zip, docx, xlsx, pptx. Returns the file id and a download link. To attach a file to a task use attach_file_to_task.

    Annotations the server declares

    • title: Upload file
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • upsert_companyCreate or update a CRM company idempotently by name.Can send data outNo findings

    Why it is in this group

    • The name "upsert_company" says "upsert": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Create or update a CRM company idempotently by name.

    Annotations the server declares

    • title: Create or update company
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • upsert_contactCreate or update a CRM contact idempotently by email.Can send data outNo findings

    Why it is in this group

    • The name "upsert_contact" says "upsert": a word for a change.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Create or update a CRM contact idempotently by email.

    Annotations the server declares

    • title: Create or update contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • upsert_dealCreate or update a deal idempotently by campaign ref (derived from the lead email).No findings

    Why it is in this group

    • The name "upsert_deal" says "upsert": a word for a change.
    Description, as the server wrote it
    Create or update a deal idempotently by campaign ref (derived from the lead email).

    Annotations the server declares

    • title: Create or update deal by ref
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 58Show 58 read-only tools
  • find_deal_by_refFind a deal by its 6-hex campaign ref code.No findings

    Why it is in this group

    • The name "find_deal_by_ref" says "find": a word for reading.
    Description, as the server wrote it
    Find a deal by its 6-hex campaign ref code.

    Annotations the server declares

    • title: Find deal by ref
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_active_timerShow the running timer, if any (project, task, start time).No findings

    Why it is in this group

    • The name "get_active_timer" says "get": a word for reading.
    Description, as the server wrote it
    Show the running timer, if any (project, task, start time).

    Annotations the server declares

    • title: Get running timer
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_activity_feedRecent changes in your projects (who changed what), optionally for one project or one area.No findings

    Why it is in this group

    • The name "get_activity_feed" says "get": a word for reading.
    Description, as the server wrote it
    Recent changes in your projects (who changed what), optionally for one project or one area.

    Annotations the server declares

    • title: Get activity feed
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_chat_messagesRead the latest messages of a chat, oldest first (message id | time | sender | text).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "get_chat_messages" says "get" and "chat": it reads messages.
    • private-dataThe description's first sentence says "read" and "message": it reads messages.
    • untrusted-inputThe name "get_chat_messages" says "get" and "chat": it reads messages, which other people can write.
    • untrusted-inputThe description's first sentence says "read" and "message": it reads messages, which other people can write.
    Description, as the server wrote it
    Read the latest messages of a chat, oldest first (message id | time | sender | text). Use before (ISO time of the oldest shown message) to page back.

    Annotations the server declares

    • title: Read chat messages
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_companyGet a CRM company with its contacts and deals.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "get" and "contact": it reads contacts.
    Description, as the server wrote it
    Get a CRM company with its contacts and deals.

    Annotations the server declares

    • title: Get company
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_contactGet a CRM contact with deals and timeline (activities, mails, notes).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "get_contact" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "get" and "contact": it reads contacts.
    • untrusted-inputThe description's first sentence says "get" and "mail": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Get a CRM contact with deals and timeline (activities, mails, notes).

    Annotations the server declares

    • title: Get contact
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_dealGet a deal with contacts, company, products, notes and its activities.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "get" and "contact": it reads contacts.
    Description, as the server wrote it
    Get a deal with contacts, company, products, notes and its activities.

    Annotations the server declares

    • title: Get deal
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_file_detailsGet details of a file or folder: name, type, size, owner, versions, tags.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "get_file_details" says "get" and "file": it reads files.
    • private-dataThe description's first sentence says "get" and "file": it reads files.
    • private-dataThe input names a file (input.fileItemId), and the tool reads: it reads files.
    Description, as the server wrote it
    Get details of a file or folder: name, type, size, owner, versions, tags.

    Annotations the server declares

    • title: Get file details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_goals_for_taskGet all goals linked to a task (task Mongo id), e.g.No findings

    Why it is in this group

    • The name "get_goals_for_task" says "get": a word for reading.
    Description, as the server wrote it
    Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned.

    Annotations the server declares

    • title: Get goals for task
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_invoiceGet an invoice with line items, buyer, totals and status.No findings

    Why it is in this group

    • The name "get_invoice" says "get": a word for reading.
    Description, as the server wrote it
    Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042.

    Annotations the server declares

    • title: Get invoice
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_invoice_pdfGet the PDF of an invoice as an attached file.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "get" and "file": it reads files.
    Description, as the server wrote it
    Get the PDF of an invoice as an attached file.

    Annotations the server declares

    • title: Get invoice PDF
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_my_colleaguesList the people you share projects with, incl.No findings

    Why it is in this group

    • The name "get_my_colleagues" says "get": a word for reading.
    Description, as the server wrote it
    List the people you share projects with, incl. their team member ids.

    Annotations the server declares

    • title: List my colleagues
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_my_profileGet your own workload.zero profile (name, job title, bio, location, skills).No findings

    Why it is in this group

    • The name "get_my_profile" says "get": a word for reading.
    Description, as the server wrote it
    Get your own workload.zero profile (name, job title, bio, location, skills).

    Annotations the server declares

    • title: Get my profile
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_my_time_entriesGet your time entries (id | date | hours | project | task | description) with the total.No findings

    Why it is in this group

    • The name "get_my_time_entries" says "get": a word for reading.
    Description, as the server wrote it
    Get your time entries (id | date | hours | project | task | description) with the total.

    Annotations the server declares

    • title: Get my time entries
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_projectGet a project: status, client, budget, period, team member ids, task count and description.No findings

    Why it is in this group

    • The name "get_project" says "get": a word for reading.
    Description, as the server wrote it
    Get a project: status, client, budget, period, team member ids, task count and description.

    Annotations the server declares

    • title: Get project
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_project_budgetBudget analytics of a project: planned vs.No findings

    Why it is in this group

    • The name "get_project_budget" says "get": a word for reading.
    Description, as the server wrote it
    Budget analytics of a project: planned vs. used hours and amount, burn rate.

    Annotations the server declares

    • title: Get project budget
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_quoteGet a quote with positions, customer, totals and status.No findings

    Why it is in this group

    • The name "get_quote" says "get": a word for reading.
    Description, as the server wrote it
    Get a quote with positions, customer, totals and status.

    Annotations the server declares

    • title: Get quote
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_quote_pdfGet the PDF of a quote as an attached file.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "get" and "file": it reads files.
    Description, as the server wrote it
    Get the PDF of a quote as an attached file.

    Annotations the server declares

    • title: Get quote PDF
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_revenueRevenue breakdown of the year (per month, per client).No findings

    Why it is in this group

    • The name "get_revenue" says "get": a word for reading.
    Description, as the server wrote it
    Revenue breakdown of the year (per month, per client).

    Annotations the server declares

    • title: Get revenue
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_sales_reportSales reports.No findings

    Why it is in this group

    • The name "get_sales_report" says "get": a word for reading.
    Description, as the server wrote it
    Sales reports. report: pipeline-value, conversion-rates, activity-metrics, forecast, win-loss, sales-velocity, leaderboard. Default pipeline-value.

    Annotations the server declares

    • title: Get sales report
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_taskGet one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (with download links) …Reads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • untrusted-inputThe description's first sentence says "get" and "issue": it reads issues, which other people can write.
    Description, as the server wrote it
    Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (with download links) and comments.

    Annotations the server declares

    • title: Get task
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_task_historyChange history of a task: who changed which field from what to what.No findings

    Why it is in this group

    • The name "get_task_history" says "get": a word for reading.
    Description, as the server wrote it
    Change history of a task: who changed which field from what to what.

    Annotations the server declares

    • title: Get task history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_todays_goalsGet your goals for today (id | title | timeframe | task | project | checklist progress).No findings

    Why it is in this group

    • The name "get_todays_goals" says "get": a word for reading.
    Description, as the server wrote it
    Get your goals for today (id | title | timeframe | task | project | checklist progress).

    Annotations the server declares

    • title: Get today's goals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_unbilled_hoursHours that are tracked but not invoiced yet, per project.No findings

    Why it is in this group

    • The name "get_unbilled_hours" says "get": a word for reading.
    Description, as the server wrote it
    Hours that are tracked but not invoiced yet, per project.

    Annotations the server declares

    • title: Get unbilled hours
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_unread_countsUnread message counts per chat id, for a quick inbox check.Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "message": it reads messages.
    • untrusted-inputThe description's first sentence says "message": it reads messages, which other people can write.
    Description, as the server wrote it
    Unread message counts per chat id, for a quick inbox check.

    Annotations the server declares

    • title: Get unread counts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_week_goalsGet your goals for the current week (Monday to Sunday), with checklist progress.No findings

    Why it is in this group

    • The name "get_week_goals" says "get": a word for reading.
    Description, as the server wrote it
    Get your goals for the current week (Monday to Sunday), with checklist progress.

    Annotations the server declares

    • title: Get this week's goals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_absencesList the absences you may see as admin or project manager, optionally by date range or status.No findings

    Why it is in this group

    • The name "list_absences" says "list": a word for reading.
    Description, as the server wrote it
    List the absences you may see as admin or project manager, optionally by date range or status.

    Annotations the server declares

    • title: List absences
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_billing_clientsList billing clients (id | company | invoice email | payment terms).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes.

    Annotations the server declares

    • title: List billing clients
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_billing_entitiesList your sender entities (id | name | default).No findings

    Why it is in this group

    • The name "list_billing_entities" says "list": a word for reading.
    Description, as the server wrote it
    List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them.

    Annotations the server declares

    • title: List billing entities
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_chatsList your chats (id | title | participants | unread | last message).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "list_chats" says "list" and "chat": it reads messages.
    • private-dataThe description's first sentence says "list" and "chat": it reads messages.
    • untrusted-inputThe name "list_chats" says "list" and "chat": it reads messages, which other people can write.
    • untrusted-inputThe description's first sentence says "list" and "chat": it reads messages, which other people can write.
    Description, as the server wrote it
    List your chats (id | title | participants | unread | last message).

    Annotations the server declares

    • title: List chats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_clientsList project clients (id | name | company | email).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List project clients (id | name | company | email). Use the id as clientId in create_project.

    Annotations the server declares

    • title: List clients
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_companiesList CRM companies (id | name | industry), optionally by search text.No findings

    Why it is in this group

    • The name "list_companies" says "list": a word for reading.
    Description, as the server wrote it
    List CRM companies (id | name | industry), optionally by search text.

    Annotations the server declares

    • title: List companies
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_contactsList CRM contacts (id | name | email | company | position), optionally by search text or company.Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "list_contacts" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List CRM contacts (id | name | email | company | position), optionally by search text or company.

    Annotations the server declares

    • title: List contacts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_dealsList deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company.No findings

    Why it is in this group

    • The name "list_deals" says "list": a word for reading.
    Description, as the server wrote it
    List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company.

    Annotations the server declares

    • title: List deals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_deleted_tasksList deleted tasks of your projects (id | number | title | deleted at).No findings

    Why it is in this group

    • The name "list_deleted_tasks" says "list": a word for reading.
    Description, as the server wrote it
    List deleted tasks of your projects (id | number | title | deleted at).

    Annotations the server declares

    • title: List deleted tasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_filesList files and folders in a space or in one folder of it (id | name | file/folder | size | updated).Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "list_files" says "list" and "file": it reads files.
    • private-dataThe description's first sentence says "list" and "file": it reads files.
    • private-dataThe input names a folder (input.folderId), and the tool reads: it reads files.
    Description, as the server wrote it
    List files and folders in a space or in one folder of it (id | name | file/folder | size | updated).

    Annotations the server declares

    • title: List files
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_goalsList goals by date range (YYYY-MM-DD) or timeframe, e.g.No findings

    Why it is in this group

    • The name "list_goals" says "list": a word for reading.
    Description, as the server wrote it
    List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30.

    Annotations the server declares

    • title: List goals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_invoice_paymentsList the payments recorded on an invoice.No findings

    Why it is in this group

    • The name "list_invoice_payments" says "list": a word for reading.
    Description, as the server wrote it
    List the payments recorded on an invoice.

    Annotations the server declares

    • title: List invoice payments
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_invoicesList your invoices (id | number | date | gross total | status | buyer).No findings

    Why it is in this group

    • The name "list_invoices" says "list": a word for reading.
    Description, as the server wrote it
    List your invoices (id | number | date | gross total | status | buyer).

    Annotations the server declares

    • title: List invoices
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_leadsList leads (id | name | email | company | status | score).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List leads (id | name | email | company | status | score).

    Annotations the server declares

    • title: List leads
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_my_absencesList your absences (vacation, sick days, comp time) with status.No findings

    Why it is in this group

    • The name "list_my_absences" says "list": a word for reading.
    Description, as the server wrote it
    List your absences (vacation, sick days, comp time) with status.

    Annotations the server declares

    • title: List my absences
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_notificationsList your notifications, newest first (id | read | title | message).Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "list" and "message": it reads messages.
    • untrusted-inputThe description's first sentence says "list" and "message": it reads messages, which other people can write.
    Description, as the server wrote it
    List your notifications, newest first (id | read | title | message).

    Annotations the server declares

    • title: List notifications
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_pipelinesList sales pipelines (id | name | stages | default).No findings

    Why it is in this group

    • The name "list_pipelines" says "list": a word for reading.
    Description, as the server wrote it
    List sales pipelines (id | name | stages | default).

    Annotations the server declares

    • title: List pipelines
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_project_membersList the members of a project (team member id | user id | name | role | weekly hours).No findings

    Why it is in this group

    • The name "list_project_members" says "list": a word for reading.
    Description, as the server wrote it
    List the members of a project (team member id | user id | name | role | weekly hours). Use the team member id for add/update/remove_project_member.

    Annotations the server declares

    • title: List project members
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_projectsList the projects you have access to (id | code | name | status | client).No findings

    Why it is in this group

    • The name "list_projects" says "list": a word for reading.
    Description, as the server wrote it
    List the projects you have access to (id | code | name | status | client).

    Annotations the server declares

    • title: List projects
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_quotesList your quotes (id | number | date | status | customer).No findings

    Why it is in this group

    • The name "list_quotes" says "list": a word for reading.
    Description, as the server wrote it
    List your quotes (id | number | date | status | customer).

    Annotations the server declares

    • title: List quotes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_recent_filesList the files you opened or changed recently, across all spaces.Reads private dataNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe name "list_recent_files" says "list" and "file": it reads files.
    • private-dataThe description's first sentence says "list" and "file": it reads files.
    Description, as the server wrote it
    List the files you opened or changed recently, across all spaces.

    Annotations the server declares

    • title: List recent files
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_sales_activitiesList sales activities (calls, emails, meetings, tasks, notes), optionally for a contact, deal or company, or only upcoming/overdue ones.Reads private dataReads text others writeNo findings

    Why it is in this group

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

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List sales activities (calls, emails, meetings, tasks, notes), optionally for a contact, deal or company, or only upcoming/overdue ones.

    Annotations the server declares

    • title: List sales activities
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_subtasksList the subtasks of a task.No findings

    Why it is in this group

    • The name "list_subtasks" says "list": a word for reading.
    Description, as the server wrote it
    List the subtasks of a task. Create a subtask with create_task and parentTaskId.

    Annotations the server declares

    • title: List subtasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_suppressionsList suppression list entries, optionally filtered by search, reason or open GDPR requests.No findings

    Why it is in this group

    • The name "list_suppressions" says "list": a word for reading.
    Description, as the server wrote it
    List suppression list entries, optionally filtered by search, reason or open GDPR requests.

    Annotations the server declares

    • title: List suppression list
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_task_tagsList the tags used on tasks, optionally for one project.No findings

    Why it is in this group

    • The name "list_task_tags" says "list": a word for reading.
    Description, as the server wrote it
    List the tags used on tasks, optionally for one project.

    Annotations the server declares

    • title: List task tags
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tasksList tasks (id | number | title | status | priority | project | assignees | due).No findings

    Why it is in this group

    • The name "list_tasks" says "list": a word for reading.
    Description, as the server wrote it
    List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view "all" every task in your projects. With projectId: all tasks of that project, filterable by assignee and priority.

    Annotations the server declares

    • title: List tasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_team_membersList team members (id | user | type | weekly capacity).No findings

    Why it is in this group

    • The name "list_team_members" says "list": a word for reading.
    Description, as the server wrote it
    List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store.

    Annotations the server declares

    • title: List team members
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_time_entriesList time entries of everyone you may see (admin and project manager view), filterable by project, user and date.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
    List time entries of everyone you may see (admin and project manager view), filterable by project, user and date.

    Annotations the server declares

    • title: List time entries
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_usersList the users of the workspace (id and name).No findings

    Why it is in this group

    • The name "list_users" says "list": a word for reading.
    Description, as the server wrote it
    List the users of the workspace (id and name). Use the id for direct messages; for task assignment use list_team_members or the user id.

    Annotations the server declares

    • title: List users
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_filesSearch files by name across your spaces.Reads private dataNo findings

    Why it is in this group

    • The name "search_files" says "search": a word for reading.

    What it can reach

    • private-dataThe name "search_files" says "search" and "file": it reads files.
    • private-dataThe description's first sentence says "search" and "file": it reads files.
    Description, as the server wrote it
    Search files by name across your spaces.

    Annotations the server declares

    • title: Search files
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • 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.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

5472 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 16 outbound tools breaks every one.

Reads text others write18
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out16
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__workloadzero__add_task_comment",
      "mcp__workloadzero__add_task_link",
      "mcp__workloadzero__create_client",
      "mcp__workloadzero__create_lead",
      "mcp__workloadzero__edit_message",
      "mcp__workloadzero__mark_chat_read",
      "mcp__workloadzero__send_direct_message",
      "mcp__workloadzero__send_message",
      "mcp__workloadzero__send_quote",
      "mcp__workloadzero__toggle_task_comment_reaction",
      "mcp__workloadzero__update_company",
      "mcp__workloadzero__update_contact",
      "mcp__workloadzero__update_lead",
      "mcp__workloadzero__update_task_comment",
      "mcp__workloadzero__upsert_company",
      "mcp__workloadzero__upsert_contact"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "unassign_me_from_task" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unassign_me_from_task" says "unassign": a word for a change.

    What this check looks for
  • The server marks "log_time" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

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

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

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

claude mcp add --transport http workloadzero https://mcp.workloadzero.de/mcp
claude mcp add --transport http workloadzero https://mcp.workloadzero.de/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__workloadzero__get_my_profile",
      "mcp__workloadzero__list_users",
      "mcp__workloadzero__get_my_colleagues",
      "mcp__workloadzero__list_team_members",
      "mcp__workloadzero__search",
      "mcp__workloadzero__list_notifications",
      "mcp__workloadzero__get_activity_feed",
      "mcp__workloadzero__list_projects",
      "mcp__workloadzero__get_project",
      "mcp__workloadzero__get_project_budget",
      "mcp__workloadzero__list_project_members",
      "mcp__workloadzero__list_clients",
      "mcp__workloadzero__list_tasks",
      "mcp__workloadzero__get_task",
      "mcp__workloadzero__list_subtasks",
      "mcp__workloadzero__list_deleted_tasks",
      "mcp__workloadzero__get_task_history",
      "mcp__workloadzero__list_task_tags",
      "mcp__workloadzero__get_my_time_entries",
      "mcp__workloadzero__list_time_entries",
      "mcp__workloadzero__get_active_timer",
      "mcp__workloadzero__get_todays_goals",
      "mcp__workloadzero__get_week_goals",
      "mcp__workloadzero__list_goals",
      "mcp__workloadzero__get_goals_for_task",
      "mcp__workloadzero__list_my_absences",
      "mcp__workloadzero__list_absences",
      "mcp__workloadzero__list_invoices",
      "mcp__workloadzero__get_invoice",
      "mcp__workloadzero__list_invoice_payments",
      "mcp__workloadzero__get_invoice_pdf",
      "mcp__workloadzero__get_revenue",
      "mcp__workloadzero__get_unbilled_hours",
      "mcp__workloadzero__list_billing_clients",
      "mcp__workloadzero__list_billing_entities",
      "mcp__workloadzero__list_quotes",
      "mcp__workloadzero__get_quote",
      "mcp__workloadzero__get_quote_pdf",
      "mcp__workloadzero__list_deals",
      "mcp__workloadzero__get_deal",
      "mcp__workloadzero__find_deal_by_ref",
      "mcp__workloadzero__list_companies",
      "mcp__workloadzero__get_company",
      "mcp__workloadzero__list_contacts",
      "mcp__workloadzero__get_contact",
      "mcp__workloadzero__list_sales_activities",
      "mcp__workloadzero__list_leads",
      "mcp__workloadzero__list_pipelines",
      "mcp__workloadzero__get_sales_report",
      "mcp__workloadzero__list_suppressions",
      "mcp__workloadzero__list_chats",
      "mcp__workloadzero__get_chat_messages",
      "mcp__workloadzero__get_unread_counts",
      "mcp__workloadzero__list_files",
      "mcp__workloadzero__list_recent_files",
      "mcp__workloadzero__search_files",
      "mcp__workloadzero__get_file_details",
      "mcp__workloadzero__get_file_link"
    ],
    "ask": [
      "mcp__workloadzero__update_my_profile",
      "mcp__workloadzero__mark_notifications_read",
      "mcp__workloadzero__create_project",
      "mcp__workloadzero__update_project",
      "mcp__workloadzero__add_project_member",
      "mcp__workloadzero__update_project_member",
      "mcp__workloadzero__create_client",
      "mcp__workloadzero__create_task",
      "mcp__workloadzero__update_task",
      "mcp__workloadzero__assign_task_to_me",
      "mcp__workloadzero__move_task_on_board",
      "mcp__workloadzero__add_task_link",
      "mcp__workloadzero__restore_task",
      "mcp__workloadzero__add_task_comment",
      "mcp__workloadzero__update_task_comment",
      "mcp__workloadzero__toggle_task_comment_reaction",
      "mcp__workloadzero__attach_file_to_task",
      "mcp__workloadzero__log_time",
      "mcp__workloadzero__update_time_entry",
      "mcp__workloadzero__start_timer",
      "mcp__workloadzero__stop_timer",
      "mcp__workloadzero__create_goal",
      "mcp__workloadzero__update_goal",
      "mcp__workloadzero__complete_goal",
      "mcp__workloadzero__check_goal_item",
      "mcp__workloadzero__request_absence",
      "mcp__workloadzero__update_absence",
      "mcp__workloadzero__create_invoice_from_time",
      "mcp__workloadzero__create_invoice",
      "mcp__workloadzero__update_invoice",
      "mcp__workloadzero__record_invoice_payment",
      "mcp__workloadzero__estimate_quote",
      "mcp__workloadzero__create_quote",
      "mcp__workloadzero__update_quote",
      "mcp__workloadzero__create_deal",
      "mcp__workloadzero__upsert_deal",
      "mcp__workloadzero__update_deal",
      "mcp__workloadzero__move_deal_stage",
      "mcp__workloadzero__mark_deal_won",
      "mcp__workloadzero__link_deal_to_project",
      "mcp__workloadzero__convert_deal",
      "mcp__workloadzero__upsert_company",
      "mcp__workloadzero__update_company",
      "mcp__workloadzero__upsert_contact",
      "mcp__workloadzero__update_contact",
      "mcp__workloadzero__create_sales_activity",
      "mcp__workloadzero__update_sales_activity",
      "mcp__workloadzero__complete_sales_activity",
      "mcp__workloadzero__create_lead",
      "mcp__workloadzero__update_lead",
      "mcp__workloadzero__qualify_lead",
      "mcp__workloadzero__convert_lead",
      "mcp__workloadzero__create_pipeline",
      "mcp__workloadzero__set_default_pipeline",
      "mcp__workloadzero__check_suppression",
      "mcp__workloadzero__add_suppression",
      "mcp__workloadzero__mark_gdpr_answered",
      "mcp__workloadzero__create_chat",
      "mcp__workloadzero__mark_chat_read",
      "mcp__workloadzero__upload_file",
      "mcp__workloadzero__create_folder"
    ],
    "deny": [
      "mcp__workloadzero__delete_project",
      "mcp__workloadzero__remove_project_member",
      "mcp__workloadzero__unassign_me_from_task",
      "mcp__workloadzero__remove_task_link",
      "mcp__workloadzero__set_task_work_links",
      "mcp__workloadzero__delete_task",
      "mcp__workloadzero__delete_task_comment",
      "mcp__workloadzero__remove_task_attachment",
      "mcp__workloadzero__delete_time_entry",
      "mcp__workloadzero__discard_timer",
      "mcp__workloadzero__delete_goal",
      "mcp__workloadzero__delete_absence",
      "mcp__workloadzero__review_absence",
      "mcp__workloadzero__delete_invoice",
      "mcp__workloadzero__delete_quote",
      "mcp__workloadzero__convert_quote_to_invoice",
      "mcp__workloadzero__send_quote",
      "mcp__workloadzero__mark_deal_lost",
      "mcp__workloadzero__delete_deal",
      "mcp__workloadzero__delete_company",
      "mcp__workloadzero__delete_contact",
      "mcp__workloadzero__delete_sales_activity",
      "mcp__workloadzero__delete_lead",
      "mcp__workloadzero__update_pipeline",
      "mcp__workloadzero__delete_pipeline",
      "mcp__workloadzero__send_message",
      "mcp__workloadzero__send_direct_message",
      "mcp__workloadzero__edit_message",
      "mcp__workloadzero__delete_message",
      "mcp__workloadzero__delete_file"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as workloadzero. Review it before you use it.

Capability tags behind 39 rules
  • mcp__workloadzero__search untrusted-input
  • mcp__workloadzero__list_notifications private-data, untrusted-input
  • mcp__workloadzero__list_clients private-data, untrusted-input
  • mcp__workloadzero__create_client outbound
  • mcp__workloadzero__get_task untrusted-input
  • mcp__workloadzero__add_task_link outbound
  • mcp__workloadzero__add_task_comment outbound
  • mcp__workloadzero__update_task_comment outbound
  • mcp__workloadzero__toggle_task_comment_reaction outbound
  • mcp__workloadzero__attach_file_to_task untrusted-input
  • mcp__workloadzero__get_invoice_pdf private-data
  • mcp__workloadzero__list_billing_clients private-data, untrusted-input
  • mcp__workloadzero__get_quote_pdf private-data
  • mcp__workloadzero__send_quote untrusted-input, outbound
  • mcp__workloadzero__get_deal private-data
  • mcp__workloadzero__get_company private-data
  • mcp__workloadzero__upsert_company outbound
  • mcp__workloadzero__update_company outbound
  • mcp__workloadzero__list_contacts private-data, untrusted-input
  • mcp__workloadzero__get_contact private-data, untrusted-input
  • mcp__workloadzero__upsert_contact outbound
  • mcp__workloadzero__update_contact outbound
  • mcp__workloadzero__list_sales_activities private-data, untrusted-input
  • mcp__workloadzero__list_leads private-data, untrusted-input
  • mcp__workloadzero__create_lead outbound
  • mcp__workloadzero__update_lead outbound
  • mcp__workloadzero__list_chats private-data, untrusted-input
  • mcp__workloadzero__get_chat_messages private-data, untrusted-input
  • mcp__workloadzero__send_message untrusted-input, outbound
  • mcp__workloadzero__send_direct_message untrusted-input, outbound
  • mcp__workloadzero__edit_message untrusted-input, outbound
  • mcp__workloadzero__mark_chat_read outbound
  • mcp__workloadzero__get_unread_counts private-data, untrusted-input
  • mcp__workloadzero__list_files private-data
  • mcp__workloadzero__list_recent_files private-data
  • mcp__workloadzero__search_files private-data
  • mcp__workloadzero__get_file_details private-data
  • mcp__workloadzero__get_file_link private-data
  • mcp__workloadzero__upload_file untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/de.workloadzero/mcp/verify?hash=a7fb03a1321ae2f1a09143fcaef85f8037a0ddc66baa1bebabe6138c0dfbfe0d" | jq -e '.changed == false'

Pinned hash a7fb03a1321a, from Nov 4, 2026, 16:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/de.workloadzero/mcp/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for de.workloadzero/mcp
[![anlyon.dev](https://anlyon.dev/badge/de.workloadzero/mcp.svg)](https://anlyon.dev/servers/de.workloadzero/mcp)

Source: MCP Registry · repository. Synced Nov 4, 2026, 16:17 UTC.