{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_xc2fhrp2uwzk","handle":"workload-zero","url":"https://wellknown.network/agents/workload-zero","links":{"self":"https://wellknown.network/agents/workload-zero/record.json","html":"https://wellknown.network/agents/workload-zero","markdown":"https://wellknown.network/agents/workload-zero/record.md","api":"https://wellknown.network/api/v1/agents/workload-zero","status":"https://wellknown.network/api/v1/agents/workload-zero/status","claim":"https://wellknown.network/agents/workload-zero/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/workload-zero/claim.json","badge":"https://wellknown.network/agents/workload-zero/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/workload-zero/history","tools":"https://wellknown.network/api/v1/agents/workload-zero/tools"},"ard":{"identifier":"urn:air:mcp.workloadzero.de:server:workload-zero","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"workload.zero","summary":"Back office, projects, hiring and CRM in one suite. Claude's work stays a draft until you approve.","description":"Back office, projects, hiring and CRM in one suite. Claude's work stays a draft until you approve.","publisher":{"name":"de.workloadzero","url":null},"homepage":"https://workloadzero.de/en/","repository":"https://github.com/getitdone-gmbh/workload-zero-mcp","version":"1.0.3","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.workloadzero.de/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-11-04T16:04:24.389676Z","publishedAt":"2026-11-04T16:04:24.389676Z","registryName":"de.workloadzero/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"code.review","name":"Code Review","confidence":1,"provenance":"derived"},{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.583,"provenance":"derived"}],"categories":["code","commerce","data","dev","documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 22m ago.","lastOkAt":"2026-11-06T13:28:59.069Z","lastProbedAt":"2026-11-06T13:28:59.069Z","statusComputedAt":"2026-11-06T13:32:12.345Z","reliability30d":{"probes":4,"successRate":1,"p50Ms":44,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":4,"ok":4,"authBoundaryOk":0,"serviceOk":4,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-06T13:28:59.069Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":32,"error":null,"detail":{"tools":[{"name":"get_my_profile","description":"Get your own workload.zero profile (name, job title, bio, location, skills)."},{"name":"update_my_profile","description":"Update your own profile. Pass the fields to change as a JSON object string."},{"name":"list_users","description":"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."},{"name":"get_my_colleagues","description":"List the people you share projects with, incl. their team member ids."},{"name":"list_team_members","description":"List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store."},{"name":"search","description":"Search across projects, tasks (title, number, linked issue) and users. Example: query \"ZERO-41\" or \"login bug\"."},{"name":"list_notifications","description":"List your notifications, newest first (id | read | title | message)."},{"name":"mark_notifications_read","description":"Mark one notification as read, or all of them when notificationId is left out."},{"name":"get_activity_feed","description":"Recent changes in your projects (who changed what), optionally for one project or one area."},{"name":"list_projects","description":"List the projects you have access to (id | code | name | status | client)."},{"name":"get_project","description":"Get a project: status, client, budget, period, team member ids, task count and description."},{"name":"create_project","description":"Create a project. clientId comes from list_clients (or create_client). Example: title \"Website relaunch\", projectCode \"WEB\", duration {startDate: \"2026-11-01\", "},{"name":"update_project","description":"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."},{"name":"delete_project","description":"Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database."},{"name":"get_project_budget","description":"Budget analytics of a project: planned vs. used hours and amount, burn rate."},{"name":"list_project_members","description":"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."},{"name":"add_project_member","description":"Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members."},{"name":"update_project_member","description":"Change role, weekly hours, capacity or permissions of a project member."},{"name":"remove_project_member","description":"Remove a team member from a project. Their tasks stay assigned until you reassign them."},{"name":"list_clients","description":"List project clients (id | name | company | email). Use the id as clientId in create_project."},{"name":"create_client","description":"Create a project client (admin or project manager)."},{"name":"list_tasks","description":"List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view \"all\" every task in your "},{"name":"get_task","description":"Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (w"},{"name":"create_task","description":"Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title \"Fix login redirect\", priority \"high\", assignedTo [u"},{"name":"update_task","description":"Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linked"},{"name":"assign_task_to_me","description":"Add yourself to the assignees of a task."},{"name":"unassign_me_from_task","description":"Remove yourself from the assignees of a task."},{"name":"list_subtasks","description":"List the subtasks of a task. Create a subtask with create_task and parentTaskId."},{"name":"move_task_on_board","description":"Move a task to a board column (status) and position (0 = top)."},{"name":"add_task_link","description":"Add a link to a task, e.g. the pull request, Figma frame or Jira ticket."},{"name":"remove_task_link","description":"Remove a link from a task by its position in the links list (0-based, as shown by get_task)."},{"name":"set_task_work_links","description":"Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview)."},{"name":"delete_task","description":"Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task."},{"name":"restore_task","description":"Restore a deleted task. Takes the Mongo id from list_deleted_tasks."},{"name":"list_deleted_tasks","description":"List deleted tasks of your projects (id | number | title | deleted at)."},{"name":"get_task_history","description":"Change history of a task: who changed which field from what to what."},{"name":"list_task_tags","description":"List the tags used on tasks, optionally for one project."},{"name":"add_task_comment","description":"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>/."},{"name":"update_task_comment","description":"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 e"},{"name":"delete_task_comment","description":"Delete a comment (your own, or any as admin, project manager or project lead)."},{"name":"toggle_task_comment_reaction","description":"Add your emoji reaction to a comment, or remove it if you already reacted with that emoji."},{"name":"attach_file_to_task","description":"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 proj"},{"name":"remove_task_attachment","description":"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)."},{"name":"get_my_time_entries","description":"Get your time entries (id | date | hours | project | task | description) with the total."},{"name":"list_time_entries","description":"List time entries of everyone you may see (admin and project manager view), filterable by project, user and date."},{"name":"log_time","description":"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"},{"name":"update_time_entry","description":"Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change."},{"name":"delete_time_entry","description":"Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted."},{"name":"start_timer","description":"Start the running timer for a project (and task). Stop it with stop_timer to book the time."},{"name":"stop_timer","description":"Stop the running timer and book the time as a time entry."},{"name":"get_active_timer","description":"Show the running timer, if any (project, task, start time)."},{"name":"discard_timer","description":"Discard the running timer without booking any time."},{"name":"get_todays_goals","description":"Get your goals for today (id | title | timeframe | task | project | checklist progress)."},{"name":"get_week_goals","description":"Get your goals for the current week (Monday to Sunday), with checklist progress."},{"name":"list_goals","description":"List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30."},{"name":"get_goals_for_task","description":"Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned."},{"name":"create_goal","description":"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 inv"},{"name":"update_goal","description":"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."},{"name":"complete_goal","description":"Mark a goal as completed. Checklist items keep their own state."},{"name":"check_goal_item","description":"Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows)."},{"name":"delete_goal","description":"Delete a goal and its checklist. Linked tasks and time entries stay."},{"name":"list_my_absences","description":"List your absences (vacation, sick days, comp time) with status."},{"name":"list_absences","description":"List the absences you may see as admin or project manager, optionally by date range or status."},{"name":"request_absence","description":"Request an absence. Example: type \"vacation\", startDate \"2026-12-22\", endDate \"2026-12-31\". Partial days: startTime/endTime or hours."},{"name":"update_absence","description":"Change an absence request (dates, type, reason). Give only the fields to change."},{"name":"delete_absence","description":"Withdraw an absence request or delete an absence. The team calendar updates immediately."},{"name":"review_absence","description":"Approve or reject an absence request (admin or manager). The employee sees the decision."},{"name":"list_invoices","description":"List your invoices (id | number | date | gross total | status | buyer)."},{"name":"get_invoice","description":"Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042."},{"name":"create_invoice_from_time","description":"Create a draft invoice from the unbilled time entries of a project in a period."},{"name":"create_invoice","description":"Create a draft invoice by hand. It stays a draft: finalizing and sending happen in the app, and finalizing needs a real sender address with a tax number or VAT "},{"name":"update_invoice","description":"Update a draft invoice. Give only the fields to change; lineItems replaces the whole list; billingEntityId changes the sender and may renumber the draft. Finali"},{"name":"delete_invoice","description":"Delete a draft invoice. Finalized invoices cannot be deleted."},{"name":"record_invoice_payment","description":"Record a (partial) payment on an invoice. Example: amount 1190, paidAt \"2026-11-04\"."},{"name":"list_invoice_payments","description":"List the payments recorded on an invoice."},{"name":"get_invoice_pdf","description":"Get the PDF of an invoice as an attached file."},{"name":"get_revenue","description":"Revenue breakdown of the year (per month, per client)."},{"name":"get_unbilled_hours","description":"Hours that are tracked but not invoiced yet, per project."},{"name":"list_billing_clients","description":"List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes."},{"name":"list_billing_entities","description":"List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them."},{"name":"create_billing_entity","description":"Create a sender for quotes and invoices. This data is printed on legal documents such as quotes and invoices, so use only what the user gives you and never inve"},{"name":"update_billing_entity","description":"Update a sender from list_billing_entities. Give only the fields to change. This data is printed on legal documents such as quotes and invoices, so use only wha"},{"name":"list_quotes","description":"List your quotes (id | number | date | status | customer)."},{"name":"get_quote","description":"Get a quote with positions, customer, totals and status."},{"name":"estimate_quote","description":"Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparab"},{"name":"create_quote","description":"Create a quote as a DRAFT. Needs a real sender: billingEntityId from list_billing_entities, or create_billing_entity first with data the user gives you, never i"},{"name":"update_quote","description":"Update a draft quote. Give only the fields to change; positions replaces the whole list; billingEntityId changes the sender."},{"name":"delete_quote","description":"Delete a quote that has not been sent yet. Sent quotes stay for the record."},{"name":"get_quote_pdf","description":"Get the PDF of a quote as an attached file."},{"name":"convert_quote_to_invoice","description":"Convert an ACCEPTED quote into a draft invoice (positions 1:1)."},{"name":"send_quote","description":"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 appr"},{"name":"list_deals","description":"List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company."},{"name":"get_deal","description":"Get a deal with contacts, company, products, notes and its activities."},{"name":"create_deal","description":"Create a deal. Example: title \"Website relaunch Acme\", value 24000, stage \"proposal\", companyId, contactIds."},{"name":"upsert_deal","description":"Create or update a deal idempotently by campaign ref (derived from the lead email)."},{"name":"update_deal","description":"Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company."},{"name":"move_deal_stage","description":"Move a deal to another pipeline stage, e.g. \"negotiation\"."},{"name":"mark_deal_won","description":"Mark a deal as won; status won, stage closed_won, counts in reports."},{"name":"mark_deal_lost","description":"Mark a deal as lost with a reason, e.g. \"Budget moved to 2027\"."},{"name":"link_deal_to_project","description":"Link a won deal to the workload.zero project that delivers it."}],"toolCount":151,"toolsHash":"d1b866bd087f417234ce1797c6e827cdad33a1f80913efbaa9932e85e199534e","serverName":"workload-zero","capabilities":["tools"],"serverVersion":"2.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-06T05:27:37.955Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"get_my_profile","description":"Get your own workload.zero profile (name, job title, bio, location, skills)."},{"name":"update_my_profile","description":"Update your own profile. Pass the fields to change as a JSON object string."},{"name":"list_users","description":"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."},{"name":"get_my_colleagues","description":"List the people you share projects with, incl. their team member ids."},{"name":"list_team_members","description":"List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store."},{"name":"search","description":"Search across projects, tasks (title, number, linked issue) and users. Example: query \"ZERO-41\" or \"login bug\"."},{"name":"list_notifications","description":"List your notifications, newest first (id | read | title | message)."},{"name":"mark_notifications_read","description":"Mark one notification as read, or all of them when notificationId is left out."},{"name":"get_activity_feed","description":"Recent changes in your projects (who changed what), optionally for one project or one area."},{"name":"list_projects","description":"List the projects you have access to (id | code | name | status | client)."},{"name":"get_project","description":"Get a project: status, client, budget, period, team member ids, task count and description."},{"name":"create_project","description":"Create a project. clientId comes from list_clients (or create_client). Example: title \"Website relaunch\", projectCode \"WEB\", duration {startDate: \"2026-11-01\", "},{"name":"update_project","description":"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."},{"name":"delete_project","description":"Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database."},{"name":"get_project_budget","description":"Budget analytics of a project: planned vs. used hours and amount, burn rate."},{"name":"list_project_members","description":"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."},{"name":"add_project_member","description":"Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members."},{"name":"update_project_member","description":"Change role, weekly hours, capacity or permissions of a project member."},{"name":"remove_project_member","description":"Remove a team member from a project. Their tasks stay assigned until you reassign them."},{"name":"list_clients","description":"List project clients (id | name | company | email). Use the id as clientId in create_project."},{"name":"create_client","description":"Create a project client (admin or project manager)."},{"name":"list_tasks","description":"List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view \"all\" every task in your "},{"name":"get_task","description":"Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (w"},{"name":"create_task","description":"Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title \"Fix login redirect\", priority \"high\", assignedTo [u"},{"name":"update_task","description":"Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linked"},{"name":"assign_task_to_me","description":"Add yourself to the assignees of a task."},{"name":"unassign_me_from_task","description":"Remove yourself from the assignees of a task."},{"name":"list_subtasks","description":"List the subtasks of a task. Create a subtask with create_task and parentTaskId."},{"name":"move_task_on_board","description":"Move a task to a board column (status) and position (0 = top)."},{"name":"add_task_link","description":"Add a link to a task, e.g. the pull request, Figma frame or Jira ticket."},{"name":"remove_task_link","description":"Remove a link from a task by its position in the links list (0-based, as shown by get_task)."},{"name":"set_task_work_links","description":"Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview)."},{"name":"delete_task","description":"Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task."},{"name":"restore_task","description":"Restore a deleted task. Takes the Mongo id from list_deleted_tasks."},{"name":"list_deleted_tasks","description":"List deleted tasks of your projects (id | number | title | deleted at)."},{"name":"get_task_history","description":"Change history of a task: who changed which field from what to what."},{"name":"list_task_tags","description":"List the tags used on tasks, optionally for one project."},{"name":"add_task_comment","description":"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>/."},{"name":"update_task_comment","description":"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 e"},{"name":"delete_task_comment","description":"Delete a comment (your own, or any as admin, project manager or project lead)."},{"name":"toggle_task_comment_reaction","description":"Add your emoji reaction to a comment, or remove it if you already reacted with that emoji."},{"name":"attach_file_to_task","description":"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 proj"},{"name":"remove_task_attachment","description":"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)."},{"name":"get_my_time_entries","description":"Get your time entries (id | date | hours | project | task | description) with the total."},{"name":"list_time_entries","description":"List time entries of everyone you may see (admin and project manager view), filterable by project, user and date."},{"name":"log_time","description":"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"},{"name":"update_time_entry","description":"Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change."},{"name":"delete_time_entry","description":"Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted."},{"name":"start_timer","description":"Start the running timer for a project (and task). Stop it with stop_timer to book the time."},{"name":"stop_timer","description":"Stop the running timer and book the time as a time entry."},{"name":"get_active_timer","description":"Show the running timer, if any (project, task, start time)."},{"name":"discard_timer","description":"Discard the running timer without booking any time."},{"name":"get_todays_goals","description":"Get your goals for today (id | title | timeframe | task | project | checklist progress)."},{"name":"get_week_goals","description":"Get your goals for the current week (Monday to Sunday), with checklist progress."},{"name":"list_goals","description":"List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30."},{"name":"get_goals_for_task","description":"Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned."},{"name":"create_goal","description":"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 inv"},{"name":"update_goal","description":"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."},{"name":"complete_goal","description":"Mark a goal as completed. Checklist items keep their own state."},{"name":"check_goal_item","description":"Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows)."},{"name":"delete_goal","description":"Delete a goal and its checklist. Linked tasks and time entries stay."},{"name":"list_my_absences","description":"List your absences (vacation, sick days, comp time) with status."},{"name":"list_absences","description":"List the absences you may see as admin or project manager, optionally by date range or status."},{"name":"request_absence","description":"Request an absence. Example: type \"vacation\", startDate \"2026-12-22\", endDate \"2026-12-31\". Partial days: startTime/endTime or hours."},{"name":"update_absence","description":"Change an absence request (dates, type, reason). Give only the fields to change."},{"name":"delete_absence","description":"Withdraw an absence request or delete an absence. The team calendar updates immediately."},{"name":"review_absence","description":"Approve or reject an absence request (admin or manager). The employee sees the decision."},{"name":"list_invoices","description":"List your invoices (id | number | date | gross total | status | buyer)."},{"name":"get_invoice","description":"Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042."},{"name":"create_invoice_from_time","description":"Create a draft invoice from the unbilled time entries of a project in a period."},{"name":"create_invoice","description":"Create a draft invoice by hand. It stays a draft: finalizing and sending happen in the app, and finalizing needs a real sender address with a tax number or VAT "},{"name":"update_invoice","description":"Update a draft invoice. Give only the fields to change; lineItems replaces the whole list; billingEntityId changes the sender and may renumber the draft. Finali"},{"name":"delete_invoice","description":"Delete a draft invoice. Finalized invoices cannot be deleted."},{"name":"record_invoice_payment","description":"Record a (partial) payment on an invoice. Example: amount 1190, paidAt \"2026-11-04\"."},{"name":"list_invoice_payments","description":"List the payments recorded on an invoice."},{"name":"get_invoice_pdf","description":"Get the PDF of an invoice as an attached file."},{"name":"get_revenue","description":"Revenue breakdown of the year (per month, per client)."},{"name":"get_unbilled_hours","description":"Hours that are tracked but not invoiced yet, per project."},{"name":"list_billing_clients","description":"List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes."},{"name":"list_billing_entities","description":"List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them."},{"name":"create_billing_entity","description":"Create a sender for quotes and invoices. This data is printed on legal documents such as quotes and invoices, so use only what the user gives you and never inve"},{"name":"update_billing_entity","description":"Update a sender from list_billing_entities. Give only the fields to change. This data is printed on legal documents such as quotes and invoices, so use only wha"},{"name":"list_quotes","description":"List your quotes (id | number | date | status | customer)."},{"name":"get_quote","description":"Get a quote with positions, customer, totals and status."},{"name":"estimate_quote","description":"Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparab"},{"name":"create_quote","description":"Create a quote as a DRAFT. Needs a real sender: billingEntityId from list_billing_entities, or create_billing_entity first with data the user gives you, never i"},{"name":"update_quote","description":"Update a draft quote. Give only the fields to change; positions replaces the whole list; billingEntityId changes the sender."},{"name":"delete_quote","description":"Delete a quote that has not been sent yet. Sent quotes stay for the record."},{"name":"get_quote_pdf","description":"Get the PDF of a quote as an attached file."},{"name":"convert_quote_to_invoice","description":"Convert an ACCEPTED quote into a draft invoice (positions 1:1)."},{"name":"send_quote","description":"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 appr"},{"name":"list_deals","description":"List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company."},{"name":"get_deal","description":"Get a deal with contacts, company, products, notes and its activities."},{"name":"create_deal","description":"Create a deal. Example: title \"Website relaunch Acme\", value 24000, stage \"proposal\", companyId, contactIds."},{"name":"upsert_deal","description":"Create or update a deal idempotently by campaign ref (derived from the lead email)."},{"name":"update_deal","description":"Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company."},{"name":"move_deal_stage","description":"Move a deal to another pipeline stage, e.g. \"negotiation\"."},{"name":"mark_deal_won","description":"Mark a deal as won; status won, stage closed_won, counts in reports."},{"name":"mark_deal_lost","description":"Mark a deal as lost with a reason, e.g. \"Budget moved to 2027\"."},{"name":"link_deal_to_project","description":"Link a won deal to the workload.zero project that delivers it."}],"toolCount":151,"toolsHash":"d1b866bd087f417234ce1797c6e827cdad33a1f80913efbaa9932e85e199534e","serverName":"workload-zero","capabilities":["tools"],"serverVersion":"2.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-05T20:25:35.627Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":55,"error":null,"detail":{"tools":[{"name":"get_my_profile","description":"Get your own workload.zero profile (name, job title, bio, location, skills)."},{"name":"update_my_profile","description":"Update your own profile. Pass the fields to change as a JSON object string."},{"name":"list_users","description":"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."},{"name":"get_my_colleagues","description":"List the people you share projects with, incl. their team member ids."},{"name":"list_team_members","description":"List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store."},{"name":"search","description":"Search across projects, tasks (title, number, linked issue) and users. Example: query \"ZERO-41\" or \"login bug\"."},{"name":"list_notifications","description":"List your notifications, newest first (id | read | title | message)."},{"name":"mark_notifications_read","description":"Mark one notification as read, or all of them when notificationId is left out."},{"name":"get_activity_feed","description":"Recent changes in your projects (who changed what), optionally for one project or one area."},{"name":"list_projects","description":"List the projects you have access to (id | code | name | status | client)."},{"name":"get_project","description":"Get a project: status, client, budget, period, team member ids, task count and description."},{"name":"create_project","description":"Create a project. clientId comes from list_clients (or create_client). Example: title \"Website relaunch\", projectCode \"WEB\", duration {startDate: \"2026-11-01\", "},{"name":"update_project","description":"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."},{"name":"delete_project","description":"Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database."},{"name":"get_project_budget","description":"Budget analytics of a project: planned vs. used hours and amount, burn rate."},{"name":"list_project_members","description":"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."},{"name":"add_project_member","description":"Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members."},{"name":"update_project_member","description":"Change role, weekly hours, capacity or permissions of a project member."},{"name":"remove_project_member","description":"Remove a team member from a project. Their tasks stay assigned until you reassign them."},{"name":"list_clients","description":"List project clients (id | name | company | email). Use the id as clientId in create_project."},{"name":"create_client","description":"Create a project client (admin or project manager)."},{"name":"list_tasks","description":"List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view \"all\" every task in your "},{"name":"get_task","description":"Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (w"},{"name":"create_task","description":"Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title \"Fix login redirect\", priority \"high\", assignedTo [u"},{"name":"update_task","description":"Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linked"},{"name":"assign_task_to_me","description":"Add yourself to the assignees of a task."},{"name":"unassign_me_from_task","description":"Remove yourself from the assignees of a task."},{"name":"list_subtasks","description":"List the subtasks of a task. Create a subtask with create_task and parentTaskId."},{"name":"move_task_on_board","description":"Move a task to a board column (status) and position (0 = top)."},{"name":"add_task_link","description":"Add a link to a task, e.g. the pull request, Figma frame or Jira ticket."},{"name":"remove_task_link","description":"Remove a link from a task by its position in the links list (0-based, as shown by get_task)."},{"name":"set_task_work_links","description":"Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview)."},{"name":"delete_task","description":"Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task."},{"name":"restore_task","description":"Restore a deleted task. Takes the Mongo id from list_deleted_tasks."},{"name":"list_deleted_tasks","description":"List deleted tasks of your projects (id | number | title | deleted at)."},{"name":"get_task_history","description":"Change history of a task: who changed which field from what to what."},{"name":"list_task_tags","description":"List the tags used on tasks, optionally for one project."},{"name":"add_task_comment","description":"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>/."},{"name":"update_task_comment","description":"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 e"},{"name":"delete_task_comment","description":"Delete a comment (your own, or any as admin, project manager or project lead)."},{"name":"toggle_task_comment_reaction","description":"Add your emoji reaction to a comment, or remove it if you already reacted with that emoji."},{"name":"attach_file_to_task","description":"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 proj"},{"name":"remove_task_attachment","description":"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)."},{"name":"get_my_time_entries","description":"Get your time entries (id | date | hours | project | task | description) with the total."},{"name":"list_time_entries","description":"List time entries of everyone you may see (admin and project manager view), filterable by project, user and date."},{"name":"log_time","description":"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"},{"name":"update_time_entry","description":"Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change."},{"name":"delete_time_entry","description":"Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted."},{"name":"start_timer","description":"Start the running timer for a project (and task). Stop it with stop_timer to book the time."},{"name":"stop_timer","description":"Stop the running timer and book the time as a time entry."},{"name":"get_active_timer","description":"Show the running timer, if any (project, task, start time)."},{"name":"discard_timer","description":"Discard the running timer without booking any time."},{"name":"get_todays_goals","description":"Get your goals for today (id | title | timeframe | task | project | checklist progress)."},{"name":"get_week_goals","description":"Get your goals for the current week (Monday to Sunday), with checklist progress."},{"name":"list_goals","description":"List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30."},{"name":"get_goals_for_task","description":"Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned."},{"name":"create_goal","description":"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 inv"},{"name":"update_goal","description":"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."},{"name":"complete_goal","description":"Mark a goal as completed. Checklist items keep their own state."},{"name":"check_goal_item","description":"Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows)."},{"name":"delete_goal","description":"Delete a goal and its checklist. Linked tasks and time entries stay."},{"name":"list_my_absences","description":"List your absences (vacation, sick days, comp time) with status."},{"name":"list_absences","description":"List the absences you may see as admin or project manager, optionally by date range or status."},{"name":"request_absence","description":"Request an absence. Example: type \"vacation\", startDate \"2026-12-22\", endDate \"2026-12-31\". Partial days: startTime/endTime or hours."},{"name":"update_absence","description":"Change an absence request (dates, type, reason). Give only the fields to change."},{"name":"delete_absence","description":"Withdraw an absence request or delete an absence. The team calendar updates immediately."},{"name":"review_absence","description":"Approve or reject an absence request (admin or manager). The employee sees the decision."},{"name":"list_invoices","description":"List your invoices (id | number | date | gross total | status | buyer)."},{"name":"get_invoice","description":"Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042."},{"name":"create_invoice_from_time","description":"Create a draft invoice from the unbilled time entries of a project in a period."},{"name":"create_invoice","description":"Create a draft invoice by hand. It stays a draft: finalizing and sending happen in the app, and finalizing needs a real sender address with a tax number or VAT "},{"name":"update_invoice","description":"Update a draft invoice. Give only the fields to change; lineItems replaces the whole list; billingEntityId changes the sender and may renumber the draft. Finali"},{"name":"delete_invoice","description":"Delete a draft invoice. Finalized invoices cannot be deleted."},{"name":"record_invoice_payment","description":"Record a (partial) payment on an invoice. Example: amount 1190, paidAt \"2026-11-04\"."},{"name":"list_invoice_payments","description":"List the payments recorded on an invoice."},{"name":"get_invoice_pdf","description":"Get the PDF of an invoice as an attached file."},{"name":"get_revenue","description":"Revenue breakdown of the year (per month, per client)."},{"name":"get_unbilled_hours","description":"Hours that are tracked but not invoiced yet, per project."},{"name":"list_billing_clients","description":"List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes."},{"name":"list_billing_entities","description":"List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them."},{"name":"create_billing_entity","description":"Create a sender for quotes and invoices. This data is printed on legal documents such as quotes and invoices, so use only what the user gives you and never inve"},{"name":"update_billing_entity","description":"Update a sender from list_billing_entities. Give only the fields to change. This data is printed on legal documents such as quotes and invoices, so use only wha"},{"name":"list_quotes","description":"List your quotes (id | number | date | status | customer)."},{"name":"get_quote","description":"Get a quote with positions, customer, totals and status."},{"name":"estimate_quote","description":"Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparab"},{"name":"create_quote","description":"Create a quote as a DRAFT. Needs a real sender: billingEntityId from list_billing_entities, or create_billing_entity first with data the user gives you, never i"},{"name":"update_quote","description":"Update a draft quote. Give only the fields to change; positions replaces the whole list; billingEntityId changes the sender."},{"name":"delete_quote","description":"Delete a quote that has not been sent yet. Sent quotes stay for the record."},{"name":"get_quote_pdf","description":"Get the PDF of a quote as an attached file."},{"name":"convert_quote_to_invoice","description":"Convert an ACCEPTED quote into a draft invoice (positions 1:1)."},{"name":"send_quote","description":"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 appr"},{"name":"list_deals","description":"List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company."},{"name":"get_deal","description":"Get a deal with contacts, company, products, notes and its activities."},{"name":"create_deal","description":"Create a deal. Example: title \"Website relaunch Acme\", value 24000, stage \"proposal\", companyId, contactIds."},{"name":"upsert_deal","description":"Create or update a deal idempotently by campaign ref (derived from the lead email)."},{"name":"update_deal","description":"Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company."},{"name":"move_deal_stage","description":"Move a deal to another pipeline stage, e.g. \"negotiation\"."},{"name":"mark_deal_won","description":"Mark a deal as won; status won, stage closed_won, counts in reports."},{"name":"mark_deal_lost","description":"Mark a deal as lost with a reason, e.g. \"Budget moved to 2027\"."},{"name":"link_deal_to_project","description":"Link a won deal to the workload.zero project that delivers it."}],"toolCount":151,"toolsHash":"775954134790f8e231ad81bb2ec99979a0761597e57c59a1ae547916543733a9","serverName":"workload-zero","capabilities":["tools"],"serverVersion":"2.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-05T11:24:42.175Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":149,"error":null,"detail":{"tools":[{"name":"get_my_profile","description":"Get your own workload.zero profile (name, job title, bio, location, skills)."},{"name":"update_my_profile","description":"Update your own profile. Pass the fields to change as a JSON object string."},{"name":"list_users","description":"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."},{"name":"get_my_colleagues","description":"List the people you share projects with, incl. their team member ids."},{"name":"list_team_members","description":"List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store."},{"name":"search","description":"Search across projects, tasks (title, number, linked issue) and users. Example: query \"ZERO-41\" or \"login bug\"."},{"name":"list_notifications","description":"List your notifications, newest first (id | read | title | message)."},{"name":"mark_notifications_read","description":"Mark one notification as read, or all of them when notificationId is left out."},{"name":"get_activity_feed","description":"Recent changes in your projects (who changed what), optionally for one project or one area."},{"name":"list_projects","description":"List the projects you have access to (id | code | name | status | client)."},{"name":"get_project","description":"Get a project: status, client, budget, period, team member ids, task count and description."},{"name":"create_project","description":"Create a project. clientId comes from list_clients (or create_client). Example: title \"Website relaunch\", projectCode \"WEB\", duration {startDate: \"2026-11-01\", "},{"name":"update_project","description":"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."},{"name":"delete_project","description":"Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database."},{"name":"get_project_budget","description":"Budget analytics of a project: planned vs. used hours and amount, burn rate."},{"name":"list_project_members","description":"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."},{"name":"add_project_member","description":"Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members."},{"name":"update_project_member","description":"Change role, weekly hours, capacity or permissions of a project member."},{"name":"remove_project_member","description":"Remove a team member from a project. Their tasks stay assigned until you reassign them."},{"name":"list_clients","description":"List project clients (id | name | company | email). Use the id as clientId in create_project."},{"name":"create_client","description":"Create a project client (admin or project manager)."},{"name":"list_tasks","description":"List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view \"all\" every task in your "},{"name":"get_task","description":"Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (w"},{"name":"create_task","description":"Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title \"Fix login redirect\", priority \"high\", assignedTo [u"},{"name":"update_task","description":"Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linked"},{"name":"assign_task_to_me","description":"Add yourself to the assignees of a task."},{"name":"unassign_me_from_task","description":"Remove yourself from the assignees of a task."},{"name":"list_subtasks","description":"List the subtasks of a task. Create a subtask with create_task and parentTaskId."},{"name":"move_task_on_board","description":"Move a task to a board column (status) and position (0 = top)."},{"name":"add_task_link","description":"Add a link to a task, e.g. the pull request, Figma frame or Jira ticket."},{"name":"remove_task_link","description":"Remove a link from a task by its position in the links list (0-based, as shown by get_task)."},{"name":"set_task_work_links","description":"Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview)."},{"name":"delete_task","description":"Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task."},{"name":"restore_task","description":"Restore a deleted task. Takes the Mongo id from list_deleted_tasks."},{"name":"list_deleted_tasks","description":"List deleted tasks of your projects (id | number | title | deleted at)."},{"name":"get_task_history","description":"Change history of a task: who changed which field from what to what."},{"name":"list_task_tags","description":"List the tags used on tasks, optionally for one project."},{"name":"add_task_comment","description":"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>/."},{"name":"update_task_comment","description":"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 e"},{"name":"delete_task_comment","description":"Delete a comment (your own, or any as admin, project manager or project lead)."},{"name":"toggle_task_comment_reaction","description":"Add your emoji reaction to a comment, or remove it if you already reacted with that emoji."},{"name":"attach_file_to_task","description":"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 proj"},{"name":"remove_task_attachment","description":"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)."},{"name":"get_my_time_entries","description":"Get your time entries (id | date | hours | project | task | description) with the total."},{"name":"list_time_entries","description":"List time entries of everyone you may see (admin and project manager view), filterable by project, user and date."},{"name":"log_time","description":"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"},{"name":"update_time_entry","description":"Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change."},{"name":"delete_time_entry","description":"Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted."},{"name":"start_timer","description":"Start the running timer for a project (and task). Stop it with stop_timer to book the time."},{"name":"stop_timer","description":"Stop the running timer and book the time as a time entry."},{"name":"get_active_timer","description":"Show the running timer, if any (project, task, start time)."},{"name":"discard_timer","description":"Discard the running timer without booking any time."},{"name":"get_todays_goals","description":"Get your goals for today (id | title | timeframe | task | project | checklist progress)."},{"name":"get_week_goals","description":"Get your goals for the current week (Monday to Sunday), with checklist progress."},{"name":"list_goals","description":"List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30."},{"name":"get_goals_for_task","description":"Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned."},{"name":"create_goal","description":"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 inv"},{"name":"update_goal","description":"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."},{"name":"complete_goal","description":"Mark a goal as completed. Checklist items keep their own state."},{"name":"check_goal_item","description":"Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows)."},{"name":"delete_goal","description":"Delete a goal and its checklist. Linked tasks and time entries stay."},{"name":"list_my_absences","description":"List your absences (vacation, sick days, comp time) with status."},{"name":"list_absences","description":"List the absences you may see as admin or project manager, optionally by date range or status."},{"name":"request_absence","description":"Request an absence. Example: type \"vacation\", startDate \"2026-12-22\", endDate \"2026-12-31\". Partial days: startTime/endTime or hours."},{"name":"update_absence","description":"Change an absence request (dates, type, reason). Give only the fields to change."},{"name":"delete_absence","description":"Withdraw an absence request or delete an absence. The team calendar updates immediately."},{"name":"review_absence","description":"Approve or reject an absence request (admin or manager). The employee sees the decision."},{"name":"list_invoices","description":"List your invoices (id | number | date | gross total | status | buyer)."},{"name":"get_invoice","description":"Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042."},{"name":"create_invoice_from_time","description":"Create a draft invoice from the unbilled time entries of a project in a period."},{"name":"create_invoice","description":"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"},{"name":"update_invoice","description":"Update a draft invoice. Give only the fields to change; lineItems replaces the whole list. Finalized invoices cannot be changed."},{"name":"delete_invoice","description":"Delete a draft invoice. Finalized invoices cannot be deleted."},{"name":"record_invoice_payment","description":"Record a (partial) payment on an invoice. Example: amount 1190, paidAt \"2026-11-04\"."},{"name":"list_invoice_payments","description":"List the payments recorded on an invoice."},{"name":"get_invoice_pdf","description":"Get the PDF of an invoice as an attached file."},{"name":"get_revenue","description":"Revenue breakdown of the year (per month, per client)."},{"name":"get_unbilled_hours","description":"Hours that are tracked but not invoiced yet, per project."},{"name":"list_billing_clients","description":"List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes."},{"name":"list_billing_entities","description":"List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them."},{"name":"list_quotes","description":"List your quotes (id | number | date | status | customer)."},{"name":"get_quote","description":"Get a quote with positions, customer, totals and status."},{"name":"estimate_quote","description":"Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparab"},{"name":"create_quote","description":"Create a quote as a DRAFT. Example: date \"2026-11-04\", billingClientId from list_billing_clients, positions [{description: \"Design workshop\", quantity: 2, unit:"},{"name":"update_quote","description":"Update a draft quote. Give only the fields to change; positions replaces the whole list."},{"name":"delete_quote","description":"Delete a quote that has not been sent yet. Sent quotes stay for the record."},{"name":"get_quote_pdf","description":"Get the PDF of a quote as an attached file."},{"name":"convert_quote_to_invoice","description":"Convert an ACCEPTED quote into a draft invoice (positions 1:1)."},{"name":"send_quote","description":"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 appr"},{"name":"list_deals","description":"List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company."},{"name":"get_deal","description":"Get a deal with contacts, company, products, notes and its activities."},{"name":"create_deal","description":"Create a deal. Example: title \"Website relaunch Acme\", value 24000, stage \"proposal\", companyId, contactIds."},{"name":"upsert_deal","description":"Create or update a deal idempotently by campaign ref (derived from the lead email)."},{"name":"update_deal","description":"Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company."},{"name":"move_deal_stage","description":"Move a deal to another pipeline stage, e.g. \"negotiation\"."},{"name":"mark_deal_won","description":"Mark a deal as won; status won, stage closed_won, counts in reports."},{"name":"mark_deal_lost","description":"Mark a deal as lost with a reason, e.g. \"Budget moved to 2027\"."},{"name":"link_deal_to_project","description":"Link a won deal to the workload.zero project that delivers it."},{"name":"delete_deal","description":"Delete a deal (it is hidden from lists and reports, its activities stay)."},{"name":"convert_deal","description":"Convert a deal by ref code (idempotent): stage converted, status won."}],"toolCount":149,"toolsHash":"07945c1ff3c02ea33f7628570a572e3abecf3e42e14f8657a2023b7ac3e95f79","serverName":"workload-zero","capabilities":["tools"],"serverVersion":"2.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_my_profile","description":"Get your own workload.zero profile (name, job title, bio, location, skills)."},{"name":"update_my_profile","description":"Update your own profile. Pass the fields to change as a JSON object string."},{"name":"list_users","description":"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."},{"name":"get_my_colleagues","description":"List the people you share projects with, incl. their team member ids."},{"name":"list_team_members","description":"List team members (id | user | type | weekly capacity). The team member id is what projects and task assignments store."},{"name":"search","description":"Search across projects, tasks (title, number, linked issue) and users. Example: query \"ZERO-41\" or \"login bug\"."},{"name":"list_notifications","description":"List your notifications, newest first (id | read | title | message)."},{"name":"mark_notifications_read","description":"Mark one notification as read, or all of them when notificationId is left out."},{"name":"get_activity_feed","description":"Recent changes in your projects (who changed what), optionally for one project or one area."},{"name":"list_projects","description":"List the projects you have access to (id | code | name | status | client)."},{"name":"get_project","description":"Get a project: status, client, budget, period, team member ids, task count and description."},{"name":"create_project","description":"Create a project. clientId comes from list_clients (or create_client). Example: title \"Website relaunch\", projectCode \"WEB\", duration {startDate: \"2026-11-01\", "},{"name":"update_project","description":"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."},{"name":"delete_project","description":"Delete a project you created. It is archived and hidden from all members; tasks and time entries stay in the database."},{"name":"get_project_budget","description":"Budget analytics of a project: planned vs. used hours and amount, burn rate."},{"name":"list_project_members","description":"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."},{"name":"add_project_member","description":"Add a team member to a project (admin or project manager). teamMemberId comes from list_team_members."},{"name":"update_project_member","description":"Change role, weekly hours, capacity or permissions of a project member."},{"name":"remove_project_member","description":"Remove a team member from a project. Their tasks stay assigned until you reassign them."},{"name":"list_clients","description":"List project clients (id | name | company | email). Use the id as clientId in create_project."},{"name":"create_client","description":"Create a project client (admin or project manager)."},{"name":"list_tasks","description":"List tasks (id | number | title | status | priority | project | assignees | due). Without projectId: your assigned tasks, or with view \"all\" every task in your "},{"name":"get_task","description":"Get one task with description, status, priority, assignees, estimate and booked hours, start/due date, tags, linked issue, links, subtask parent, attachments (w"},{"name":"create_task","description":"Create a task (shown in workload.zero as created by an agent). Example: projectId from list_projects, title \"Fix login redirect\", priority \"high\", assignedTo [u"},{"name":"update_task","description":"Update a task. Give only the fields to change: status, title, description, priority, assignedTo (replaces the list), tags (replaces), deadline, maxHours, linked"},{"name":"assign_task_to_me","description":"Add yourself to the assignees of a task."},{"name":"unassign_me_from_task","description":"Remove yourself from the assignees of a task."},{"name":"list_subtasks","description":"List the subtasks of a task. Create a subtask with create_task and parentTaskId."},{"name":"move_task_on_board","description":"Move a task to a board column (status) and position (0 = top)."},{"name":"add_task_link","description":"Add a link to a task, e.g. the pull request, Figma frame or Jira ticket."},{"name":"remove_task_link","description":"Remove a link from a task by its position in the links list (0-based, as shown by get_task)."},{"name":"set_task_work_links","description":"Replace the work result links of a task (what the assignee delivered, e.g. a PR or a deployed preview)."},{"name":"delete_task","description":"Delete a task (admin, project manager or project lead). It goes to the deleted list and can be restored with restore_task."},{"name":"restore_task","description":"Restore a deleted task. Takes the Mongo id from list_deleted_tasks."},{"name":"list_deleted_tasks","description":"List deleted tasks of your projects (id | number | title | deleted at)."},{"name":"get_task_history","description":"Change history of a task: who changed which field from what to what."},{"name":"list_task_tags","description":"List the tags used on tasks, optionally for one project."},{"name":"add_task_comment","description":"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>/."},{"name":"update_task_comment","description":"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 e"},{"name":"delete_task_comment","description":"Delete a comment (your own, or any as admin, project manager or project lead)."},{"name":"toggle_task_comment_reaction","description":"Add your emoji reaction to a comment, or remove it if you already reacted with that emoji."},{"name":"attach_file_to_task","description":"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 proj"},{"name":"remove_task_attachment","description":"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)."},{"name":"get_my_time_entries","description":"Get your time entries (id | date | hours | project | task | description) with the total."},{"name":"list_time_entries","description":"List time entries of everyone you may see (admin and project manager view), filterable by project, user and date."},{"name":"log_time","description":"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"},{"name":"update_time_entry","description":"Change a time entry (hours, date, description, task, start/end time, billable). Give only the fields to change."},{"name":"delete_time_entry","description":"Delete one of your time entries. Entries that are already invoiced or approved cannot be deleted."},{"name":"start_timer","description":"Start the running timer for a project (and task). Stop it with stop_timer to book the time."},{"name":"stop_timer","description":"Stop the running timer and book the time as a time entry."},{"name":"get_active_timer","description":"Show the running timer, if any (project, task, start time)."},{"name":"discard_timer","description":"Discard the running timer without booking any time."},{"name":"get_todays_goals","description":"Get your goals for today (id | title | timeframe | task | project | checklist progress)."},{"name":"get_week_goals","description":"Get your goals for the current week (Monday to Sunday), with checklist progress."},{"name":"list_goals","description":"List goals by date range (YYYY-MM-DD) or timeframe, e.g. startDate 2026-11-01, endDate 2026-11-30."},{"name":"get_goals_for_task","description":"Get all goals linked to a task (task Mongo id), e.g. to see when work on it is planned."},{"name":"create_goal","description":"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 inv"},{"name":"update_goal","description":"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."},{"name":"complete_goal","description":"Mark a goal as completed. Checklist items keep their own state."},{"name":"check_goal_item","description":"Tick or untick one checklist item of a goal (index is 0-based, in the order list_goals shows)."},{"name":"delete_goal","description":"Delete a goal and its checklist. Linked tasks and time entries stay."},{"name":"list_my_absences","description":"List your absences (vacation, sick days, comp time) with status."},{"name":"list_absences","description":"List the absences you may see as admin or project manager, optionally by date range or status."},{"name":"request_absence","description":"Request an absence. Example: type \"vacation\", startDate \"2026-12-22\", endDate \"2026-12-31\". Partial days: startTime/endTime or hours."},{"name":"update_absence","description":"Change an absence request (dates, type, reason). Give only the fields to change."},{"name":"delete_absence","description":"Withdraw an absence request or delete an absence. The team calendar updates immediately."},{"name":"review_absence","description":"Approve or reject an absence request (admin or manager). The employee sees the decision."},{"name":"list_invoices","description":"List your invoices (id | number | date | gross total | status | buyer)."},{"name":"get_invoice","description":"Get an invoice with line items, buyer, totals and status. Accepts the id or the invoice number, e.g. RE-2026-0042."},{"name":"create_invoice_from_time","description":"Create a draft invoice from the unbilled time entries of a project in a period."},{"name":"create_invoice","description":"Create a draft invoice by hand. It stays a draft: finalizing and sending happen in the app, and finalizing needs a real sender address with a tax number or VAT "},{"name":"update_invoice","description":"Update a draft invoice. Give only the fields to change; lineItems replaces the whole list; billingEntityId changes the sender and may renumber the draft. Finali"},{"name":"delete_invoice","description":"Delete a draft invoice. Finalized invoices cannot be deleted."},{"name":"record_invoice_payment","description":"Record a (partial) payment on an invoice. Example: amount 1190, paidAt \"2026-11-04\"."},{"name":"list_invoice_payments","description":"List the payments recorded on an invoice."},{"name":"get_invoice_pdf","description":"Get the PDF of an invoice as an attached file."},{"name":"get_revenue","description":"Revenue breakdown of the year (per month, per client)."},{"name":"get_unbilled_hours","description":"Hours that are tracked but not invoiced yet, per project."},{"name":"list_billing_clients","description":"List billing clients (id | company | invoice email | payment terms). Use the id for invoices and quotes."},{"name":"list_billing_entities","description":"List your sender entities (id | name | default). Quotes and invoices are issued in the name of one of them."},{"name":"create_billing_entity","description":"Create a sender for quotes and invoices. This data is printed on legal documents such as quotes and invoices, so use only what the user gives you and never inve"},{"name":"update_billing_entity","description":"Update a sender from list_billing_entities. Give only the fields to change. This data is printed on legal documents such as quotes and invoices, so use only wha"},{"name":"list_quotes","description":"List your quotes (id | number | date | status | customer)."},{"name":"get_quote","description":"Get a quote with positions, customer, totals and status."},{"name":"estimate_quote","description":"Estimate a quote from a scope description. Returns deterministic 'historical' and 'rate-card' variants (each with sum and confidence) plus the context (comparab"},{"name":"create_quote","description":"Create a quote as a DRAFT. Needs a real sender: billingEntityId from list_billing_entities, or create_billing_entity first with data the user gives you, never i"},{"name":"update_quote","description":"Update a draft quote. Give only the fields to change; positions replaces the whole list; billingEntityId changes the sender."},{"name":"delete_quote","description":"Delete a quote that has not been sent yet. Sent quotes stay for the record."},{"name":"get_quote_pdf","description":"Get the PDF of a quote as an attached file."},{"name":"convert_quote_to_invoice","description":"Convert an ACCEPTED quote into a draft invoice (positions 1:1)."},{"name":"send_quote","description":"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 appr"},{"name":"list_deals","description":"List deals (id | title | stage | status | value | ref), optionally by stage, pipeline or company."},{"name":"get_deal","description":"Get a deal with contacts, company, products, notes and its activities."},{"name":"create_deal","description":"Create a deal. Example: title \"Website relaunch Acme\", value 24000, stage \"proposal\", companyId, contactIds."},{"name":"upsert_deal","description":"Create or update a deal idempotently by campaign ref (derived from the lead email)."},{"name":"update_deal","description":"Update a deal by id: stage, status, notes, value, loss reason, tags, title, probability, expected close date, contacts, company."},{"name":"move_deal_stage","description":"Move a deal to another pipeline stage, e.g. \"negotiation\"."},{"name":"mark_deal_won","description":"Mark a deal as won; status won, stage closed_won, counts in reports."},{"name":"mark_deal_lost","description":"Mark a deal as lost with a reason, e.g. \"Budget moved to 2027\"."},{"name":"link_deal_to_project","description":"Link a won deal to the workload.zero project that delivers it."}],"package":null,"toolSurface":{"id":"ts_4yak7nj6qvyf","endpointId":"ep_gr5d8xtwar5w","hash":"d1b866bd087f417234ce1797c6e827cdad33a1f80913efbaa9932e85e199534e","toolCount":151,"serverName":"workload-zero","serverVersion":"2.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-06T05:27:37.958Z","lastSeenAt":"2026-11-06T13:28:59.087Z","observations":2,"hiddenText":{"level":"none","total":0,"tools":0,"kinds":[],"findings":[]},"toolNames":["get_my_profile","update_my_profile","list_users","get_my_colleagues","list_team_members","search","list_notifications","mark_notifications_read","get_activity_feed","list_projects","get_project","create_project","update_project","delete_project","get_project_budget","list_project_members","add_project_member","update_project_member","remove_project_member","list_clients","create_client","list_tasks","get_task","create_task","update_task","assign_task_to_me","unassign_me_from_task","list_subtasks","move_task_on_board","add_task_link","remove_task_link","set_task_work_links","delete_task","restore_task","list_deleted_tasks","get_task_history","list_task_tags","add_task_comment","update_task_comment","delete_task_comment","toggle_task_comment_reaction","attach_file_to_task","remove_task_attachment","get_my_time_entries","list_time_entries","log_time","update_time_entry","delete_time_entry","start_timer","stop_timer","get_active_timer","discard_timer","get_todays_goals","get_week_goals","list_goals","get_goals_for_task","create_goal","update_goal","complete_goal","check_goal_item","delete_goal","list_my_absences","list_absences","request_absence","update_absence","delete_absence","review_absence","list_invoices","get_invoice","create_invoice_from_time","create_invoice","update_invoice","delete_invoice","record_invoice_payment","list_invoice_payments","get_invoice_pdf","get_revenue","get_unbilled_hours","list_billing_clients","list_billing_entities","create_billing_entity","update_billing_entity","list_quotes","get_quote","estimate_quote","create_quote","update_quote","delete_quote","get_quote_pdf","convert_quote_to_invoice","send_quote","list_deals","get_deal","create_deal","upsert_deal","update_deal","move_deal_stage","mark_deal_won","mark_deal_lost","link_deal_to_project","delete_deal","convert_deal","find_deal_by_ref","list_companies","get_company","upsert_company","update_company","delete_company","list_contacts","get_contact","upsert_contact","update_contact","delete_contact","list_sales_activities","create_sales_activity","update_sales_activity","complete_sales_activity","delete_sales_activity","list_leads","create_lead","update_lead","delete_lead","qualify_lead","convert_lead","list_pipelines","create_pipeline","update_pipeline","set_default_pipeline","delete_pipeline","get_sales_report","check_suppression","add_suppression","list_suppressions","mark_gdpr_answered","list_chats","get_chat_messages","send_message","send_direct_message","create_chat","edit_message","delete_message","mark_chat_read","get_unread_counts","list_files","list_recent_files","search_files","get_file_details","get_file_link","upload_file","create_folder","delete_file"],"distinctSurfaces":3,"surfacesWithHiddenText":0},"endpointFacts":[{"id":"ep_gr5d8xtwar5w","url":"https://mcp.workloadzero.de/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-11-05T20:25:35.656Z","auth":{"observedAt":"2026-11-05T20:25:35.683Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.workloadzero.de/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.workloadzero.de/mcp","authorizationServers":["https://mcp.workloadzero.de"],"scopesSupported":["mcp"]},"authorizationServer":{"url":"https://mcp.workloadzero.de/.well-known/oauth-authorization-server","issuer":"https://mcp.workloadzero.de","grantTypesSupported":["authorization_code"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_post","client_secret_basic","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-11-05T20:25:35.747Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.workloadzero.de","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-11-01T08:13:34.000Z","validTo":"2027-01-30T08:13:33.000Z","daysToExpiry":84,"sanCount":2,"fingerprint256":"E7:16:BD:6B:74:C1:FF:FC:82:AF:BB:F0:75:D8:6F:09:D8:7C:39:01:50:68:2A:02:CB:67:E6:30:F9:78:04:D4"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"de.workloadzero/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/de.workloadzero%2Fmcp","firstSeenAt":"2026-11-05T09:18:32.526Z","fetchedAt":"2026-11-05T09:18:32.526Z","normalizedAt":"2026-11-05T09:18:32.526Z"}]},"firstSeenAt":"2026-11-05T09:18:32.526Z","updatedAt":"2026-11-06T13:33:49.923Z"}