get_my_profile
Get my profile
Get your own workload.zero profile (name, job title, bio, location, skills).
Takes no parameters.
de.workloadzeroPublished by workloadzero.deOfficial publisherv1.0.3Updated Nov 4, 2026
Back office, projects, hiring and CRM in one suite. Claude's work stays a draft until you approve.
Remote MCP server for the workload.zero business suite, letting an assistant manage projects, tasks, time, CRM, quotes and invoices in your account.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/de.workloadzero%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"workload-zero": {
"type": "http",
"url": "https://mcp.workloadzero.de/mcp"
}
}
}Let Claude and other AI agents work in your workload.zero account: tasks and goals, time tracking, contacts and deals, quotes and invoices. workload.zero is a business suite by Get IT Done GmbH, hosted in the EU (servers in Germany, file storage in Sweden).
https://mcp.workloadzero.de/mcp (Streamable HTTP)initialize and tools/list answer without sign-in, so you can see every tool first. Tool calls need sign-in.de.workloadzero/mcp in the official MCP RegistryThen run /mcp in Claude Code and sign in.
Settings, Connectors, Add custom connector, URL https://mcp.workloadzero.de/mcp.
~/.cursor/mcp.json:
Show my goals for today and log two hours on the task I worked on this morning.
This repository only describes the hosted server. It does not contain its source code.
Source: README.md at commit e11ee50
Get my profile
Get your own workload.zero profile (name, job title, bio, location, skills).
Takes no parameters.
Update my profile
Update your own profile. Pass the fields to change as a JSON object string.
updatesrequiredList users
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.
Takes no parameters.
List my colleagues
List the people you share projects with, incl. their team member ids.
Takes no parameters.
List team members
List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store.
Takes no parameters.
Search workload.zero
Search across projects, tasks (title, number, linked issue) and users. Example: query "ZERO-41" or "login bug".
queryrequiredList notifications
List your notifications, newest first (id | read | title | message).
limitunreadOnlyMark notifications as read
Mark one notification as read, or all of them when notificationId is left out.
notificationIdGet activity feed
Recent changes in your projects (who changed what), optionally for one project or one area.
limitprojectIdentityTypeList projects
List the projects you have access to (id | code | name | status | client).
Takes no parameters.
Get project
Get a project: status, client, budget, period, team member ids, task count and description.
projectIdrequiredCreate project
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"}.
titlerequiredbudgetrequiredstatusclientIdrequireddurationrequiredisBillabledescriptionprojectCoderequiredUpdate project
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.
titlebudgetstatusupdatesdurationprojectIdrequiredisBillabledescriptiongithubReposDelete project
Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database.
projectIdrequiredGet project budget
Budget analytics of a project: planned vs. used hours and amount, burn rate.
projectIdrequiredList project members
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.
projectIdrequiredAdd project member
Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members.
roleprojectIdrequiredpermissionsweeklyHoursteamMemberIdrequiredcapacityPercentagerequiredUpdate project member
Change role, weekly hours, capacity or permissions of a project member.
roleprojectIdrequiredpermissionsweeklyHoursteamMemberIdrequiredcapacityPercentageRemove project member
Remove a team member from a project. Their tasks stay assigned until you reassign them.
projectIdrequiredteamMemberIdrequiredList clients
List project clients (id | name | company | email). Use the id as clientId in create_project.
Takes no parameters.
Create client
Create a project client (admin or project manager).
namerequiredemailphonecompanyList tasks
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.
viewstatuspriorityprojectIdassignedToincludeArchivedGet task
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.
taskrequiredCreate task
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.
tagslinkstitlerequiredstatusdeadlinemaxHourspriorityagentNameprojectIdrequiredassignedTodescriptionlinkedIssue+1 moreUpdate task
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.
tagslinkstitlestatustaskIdrequiredupdatesdeadlinemaxHourspriorityagentNameassignedTodescription+2 moreAssign task to me
Add yourself to the assignees of a task.
taskrequiredUnassign me from task
Remove yourself from the assignees of a task.
taskrequiredList subtasks
List the subtasks of a task. Create a subtask with create_task and parentTaskId.
taskrequiredMove task on board
Move a task to a board column (status) and position (0 = top).
taskrequiredstatusrequiredpositionrequiredAdd task link
Add a link to a task, e.g. the pull request, Figma frame or Jira ticket.
urlrequiredtaskrequiredtyperequiredtitleRemove task link
Remove a link from a task by its position in the links list (0-based, as shown by get_task).
taskrequiredindexrequiredReplace task work links
Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview).
taskrequiredworkLinksrequiredDelete task
Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task.
taskrequiredRestore task
Restore a deleted task. Takes the Mongo id from list_deleted_tasks.
taskIdrequiredList deleted tasks
List deleted tasks of your projects (id | number | title | deleted at).
Takes no parameters.
Get task history
Change history of a task: who changed which field from what to what.
taskrequiredList task tags
List the tags used on tasks, optionally for one project.
projectIdAdd task comment
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>/.
taskrequiredimagescontentrequiredEdit task comment
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.
taskrequiredcontentrequiredcommentIdrequiredDelete task comment
Delete a comment (your own, or any as admin, project manager or project lead).
taskrequiredcommentIdrequiredToggle comment reaction
Add your emoji reaction to a comment, or remove it if you already reacted with that emoji.
taskrequiredemojirequiredcommentIdrequiredAttach file to task
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.
taskrequiredbase64fileNamemimeTypesourceUrlfileItemIdRemove task attachment
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).
taskrequiredfileItemIdrequiredGet my time entries
Get your time entries (id | date | hours | project | task | description) with the total.
endDateprojectIdstartDateList time entries
List time entries of everyone you may see (admin and project manager view), filterable by project, user and date.
userIdendDateprojectIdstartDateLog time
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.
daterequiredhoursrequiredtaskIdendTimeprojectIdrequiredstartTimeisBillabledescriptionUpdate time entry
Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change.
datehourstaskIdendTimeentryIdrequiredstartTimeisBillabledescriptionDelete time entry
Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted.
entryIdrequiredStart timer
Start the running timer for a project (and task). Stop it with stop_timer to book the time.
taskIdprojectIdrequiredisBillabledescriptionStop timer
Stop the running timer and book the time as a time entry.
descriptionGet running timer
Show the running timer, if any (project, task, start time).
Takes no parameters.
Discard timer
Discard the running timer without booking any time.
Takes no parameters.
Get today's goals
Get your goals for today (id | title | timeframe | task | project | checklist progress).
Takes no parameters.
Get this week's goals
Get your goals for the current week (Monday to Sunday), with checklist progress.
Takes no parameters.
List goals
List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30.
endDatestartDatetimeframeGet goals for task
Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned.
taskIdrequiredCreate goal
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"}].
datetitlerequiredtaskIdagentNamechecklistprojectIdtimeframeUpdate goal
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.
datecolortitlegoalIdrequiredtaskIdendTimeupdatesagentNamechecklistprojectIdstartTimetimeframeComplete goal
Mark a goal as completed. Checklist items keep their own state.
goalIdrequiredCheck goal item
Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows).
indexrequiredgoalIdrequiredcheckedrequiredDelete goal
Delete a goal and its checklist. Linked tasks and time entries stay.
goalIdrequiredList my absences
List your absences (vacation, sick days, comp time) with status.
Takes no parameters.
List absences
List the absences you may see as admin or project manager, optionally by date range or status.
statususerIdendDatestartDateRequest absence
Request an absence. Example: type "vacation", startDate "2026-12-22", endDate "2026-12-31". Partial days: startTime/endTime or hours.
typerequiredhoursreasonendDaterequiredendTimestartDaterequiredstartTimeUpdate absence
Change an absence request (dates, type, reason). Give only the fields to change.
typehoursreasonendDateendTimeabsenceIdrequiredstartDatestartTimeDelete absence
Withdraw an absence request or delete an absence. The team calendar updates immediately.
absenceIdrequiredApprove or reject absence
Approve or reject an absence request (admin or manager). The employee sees the decision.
decisionrequiredabsenceIdrequiredList invoices
List your invoices (id | number | date | gross total | status | buyer).
Takes no parameters.
Get invoice
Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042.
invoiceIdrequiredCreate invoice from time
Create a draft invoice from the unbilled time entries of a project in a period.
endDaterequiredprojectIdrequiredstartDaterequiredCreate draft invoice
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}].
notestitlecurrencylineItemsprojectIdinvoiceDaterequiredserviceEndDatebillingClientIdbillingEntityIdpaymentTermDaysserviceStartDateUpdate draft invoice
Update a draft invoice. Give only the fields to change; lineItems replaces the whole list. Finalized invoices cannot be changed.
notestitlecurrencyinvoiceIdrequiredlineItemsprojectIdinvoiceDateserviceEndDatebillingClientIdbillingEntityIdpaymentTermDaysserviceStartDateDelete draft invoice
Delete a draft invoice. Finalized invoices cannot be deleted.
invoiceIdrequiredRecord invoice payment
Record a (partial) payment on an invoice. Example: amount 1190, paidAt "2026-11-04".
noteamountrequiredpaidAtinvoiceIdrequiredList invoice payments
List the payments recorded on an invoice.
invoiceIdrequiredGet invoice PDF
Get the PDF of an invoice as an attached file.
invoiceIdrequiredGet revenue
Revenue breakdown of the year (per month, per client).
Takes no parameters.
Get unbilled hours
Hours that are tracked but not invoiced yet, per project.
Takes no parameters.
List billing clients
List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes.
Takes no parameters.
List billing entities
List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them.
Takes no parameters.
List quotes
List your quotes (id | number | date | status | customer).
Takes no parameters.
Get quote
Get a quote with positions, customer, totals and status.
quoteIdrequiredEstimate quote
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.
scoperequiredprojectIdbillingClientIdbillingEntityIdCreate draft quote
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.
datadateintroclosingsubjectvatRatecustomerpositionsprojectIdconditionsvalidUntilsourceDealId+2 moreUpdate draft quote
Update a draft quote. Give only the fields to change; positions replaces the whole list.
dateintroclosingquoteIdrequiredsubjectvatRatecustomerpositionsprojectIdconditionsvalidUntilsourceDealId+2 moreDelete quote
Delete a quote that has not been sent yet. Sent quotes stay for the record.
quoteIdrequiredGet quote PDF
Get the PDF of a quote as an attached file.
quoteIdrequiredConvert quote to invoice
Convert an ACCEPTED quote into a draft invoice (positions 1:1).
quoteIdrequiredSend quote to client
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.
messagequoteIdrequiredsubjectcopyToSelfrecipientEmailList deals
List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company.
stagecompanyIdpipelineIdGet deal
Get a deal with contacts, company, products, notes and its activities.
dealIdrequiredCreate deal
Create a deal. Example: title "Website relaunch Acme", value 24000, stage "proposal", companyId, contactIds.
tagsnotesstagetitlerequiredvaluecurrencycompanyIdcontactIdspipelineIdprobabilityexpectedCloseDateCreate or update deal by ref
Create or update a deal idempotently by campaign ref (derived from the lead email).
tagsemailrequirednotesstagetitlerequiredvaluecurrencycompanyIdsignupRefcontactIdspipelineIdUpdate deal
Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company.
tagsnotesstagetitlevaluedealIdrequiredstatuscompanyIdcontactIdslossReasonpipelineIdprobability+1 moreMove deal stage
Move a deal to another pipeline stage, e.g. "negotiation".
stagerequireddealIdrequiredMark deal won
Mark a deal as won; status won, stage closed_won, counts in reports.
dealIdrequiredMark deal lost
Mark a deal as lost with a reason, e.g. "Budget moved to 2027".
dealIdrequiredlossReasonrequiredLink deal to project
Link a won deal to the workload.zero project that delivers it.
dealIdrequiredprojectIdrequiredDelete deal
Delete a deal (it is hidden from lists and reports, its activities stay).
dealIdrequiredConvert deal by ref
Convert a deal by ref code (idempotent): stage converted, status won.
atrefCoderequiredsignupRefFind deal by ref
Find a deal by its 6-hex campaign ref code.
refCoderequiredList companies
List CRM companies (id | name | industry), optionally by search text.
searchGet company
Get a CRM company with its contacts and deals.
companyIdrequiredCreate or update company
Create or update a CRM company idempotently by name.
namerequiredsizetagsemailphoneaddresswebsiteindustryclientRefdescriptionannualRevenueemployeesCount+1 moreUpdate company
Update a CRM company by id, e.g. to rename it. Give only the fields to change.
namesizetagsemailphoneaddresswebsiteindustryclientRefcompanyIdrequireddescriptionannualRevenue+2 moreDelete company
Delete a CRM company (it is hidden, its contacts stay).
companyIdrequiredList contacts
List CRM contacts (id | name | email | company | position), optionally by search text or company.
searchcompanyIdGet contact
Get a CRM contact with deals and timeline (activities, mails, notes).
contactIdrequiredCreate or update contact
Create or update a CRM contact idempotently by email.
tagsemailphonesourceaddresslastNamerequiredpositioncompanyIdfirstNamerequireddepartmentmobilePhonetalentPoolRef+1 moreUpdate contact
Update a CRM contact by id, e.g. to change the email address. Give only the fields to change.
tagsemailphonesourceaddresslastNamepositioncompanyIdcontactIdrequiredfirstNamedepartmentmobilePhone+2 moreDelete contact
Delete a CRM contact. Before deleting for GDPR reasons, add the address to the suppression list.
contactIdrequiredList sales activities
List sales activities (calls, emails, meetings, tasks, notes), optionally for a contact, deal or company, or only upcoming/overdue ones.
duetypedealIdcompanyIdcontactIdCreate sales activity
Log or schedule a sales activity. Example: type "call", subject "Follow-up on proposal", contactId, dealId, scheduledAt "2026-11-06T10:00:00Z".
typerequirednotesdealIdoutcomesubjectrequiredcompanyIdcontactIdreminderAtcompletedAtisCompletedscheduledAtdurationMinutesUpdate sales activity
Update a sales activity. Give only the fields to change.
typenotesdealIdoutcomesubjectcompanyIdcontactIdactivityIdrequiredreminderAtcompletedAtisCompletedscheduledAt+1 moreComplete sales activity
Mark a sales activity (call, email, meeting, task) as done.
activityIdrequiredDelete sales activity
Delete a sales activity from the deal and contact timeline.
activityIdrequiredList leads
List leads (id | name | email | company | status | score).
Takes no parameters.
Create lead
Create a lead (a person not yet qualified), e.g. from an event or a website form.
tagsemailnotesphonesourcecompanylastNamerequiredpositionfirstNamerequiredUpdate lead
Update a lead, e.g. its status. Give only the fields to change.
tagsemailnotesphoneleadIdrequiredsourcestatuscompanylastNamepositionfirstNameDelete lead
Delete a lead that is not converted.
leadIdrequiredQualify lead
Mark a lead as qualified, ready to convert into a contact and deal.
leadIdrequiredConvert lead
Convert a lead into a contact (and company), optionally with a new deal.
leadIdrequireddealTitledealValuecreateDealList pipelines
List sales pipelines (id | name | stages | default).
Takes no parameters.
Create pipeline
Create a sales pipeline with its stages.
namerequiredstagesisDefaultUpdate pipeline
Update a sales pipeline: name, stages (replaces the whole list) or default flag.
namestagesisDefaultpipelineIdrequiredSet default pipeline
Set a sales pipeline as the default for new deals.
pipelineIdrequiredDelete pipeline
Delete a sales pipeline. Move or close its deals first.
pipelineIdrequiredGet sales report
Sales reports. report: pipeline-value, conversion-rates, activity-metrics, forecast, win-loss, sales-velocity, leaderboard. Default pipeline-value.
reportCheck suppression list
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.
emailsrequiredAdd to suppression list
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).
noteemaildomainreasonrequiredgdprAccessreceivedAtgdprErasuregdprObjectionList suppression list
List suppression list entries, optionally filtered by search, reason or open GDPR requests.
reasonsearchopenGdprOnlyMark GDPR request answered
Mark the GDPR request (Art. 15/17/21) of a suppression list entry as answered.
idrequiredansweredAtList chats
List your chats (id | title | participants | unread | last message).
Takes no parameters.
Read chat messages
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.
limitbeforechatIdrequiredSend chat message
Send a message in a chat. The participants see it immediately.
textrequiredchatIdrequiredmentionsSend direct message
Send a direct message to a person (user id from list_users). Opens the direct chat if there is none yet.
textrequireduserIdrequiredCreate group chat
Create a group chat with people (user ids from list_users), optionally tied to projects.
namerequiredprojectIdsvisibilityparticipantIdsrequiredEdit chat message
Edit one of your chat messages. Participants see the new text marked as edited.
textrequiredchatIdrequiredmessageIdrequiredDelete chat message
Delete one of your chat messages for all participants.
chatIdrequiredmessageIdrequiredMark chat as read
Mark all messages of a chat as read; resets its unread count.
chatIdrequiredGet unread counts
Unread message counts per chat id, for a quick inbox check.
Takes no parameters.
List files
List files and folders in a space or in one folder of it (id | name | file/folder | size | updated).
spaceIdfolderIdspaceTyperequiredList recent files
List the files you opened or changed recently, across all spaces.
Takes no parameters.
Search files
Search files by name across your spaces.
queryrequiredGet file details
Get details of a file or folder: name, type, size, owner, versions, tags.
fileItemIdrequiredGet file download link
Get a temporary download link for a file (open it to view or download; the link expires, call again for a fresh one).
fileItemIdrequiredUpload file
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.
base64spaceIdfileNamefolderIdmimeTypesourceUrlspaceTyperequiredCreate folder
Create a folder in a space, optionally inside another folder.
namerequiredspaceIdspaceTyperequiredparentFolderIdDelete file
Move a file or folder to the trash (it can be restored in the app).
fileItemIdrequired90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a license in the repository or the registry entry.
claude mcp add --transport http workload-zero https://mcp.workloadzero.de/mcp{ "mcpServers": { "workload-zero": { "url": "https://mcp.workloadzero.de/mcp" } }}