Skip to main content
Glama

update_work_package

DestructiveIdempotent

Change OpenProject work package details—status, assignee, dates, time, version, parent, or custom fields—with validation and preview confirmation before applying.

Instructions

Update a work package.

The tool validates the patch first. assignee: 'me' or numeric user id (e.g., 42). Call list_users to find ids. parent re-parents the work package (numeric id or a PROJ-123 reference); pass 'none' to remove the parent and make it top-level. version accepts a version name/id, or 'none' to unassign the version. sprint accepts a Backlogs sprint name/id (requires the Backlogs module and OpenProject 17.3+), or 'none' to unassign it. Pass 'none' to assignee, responsible, category or project_phase to unassign that field. Omitted fields stay unchanged. target_versions accepts a list of version names/ids to assign multiple target versions at once (OpenProject's multi-version feature); pass [] to clear all. target_versions and version write the same underlying data and cannot be used together in one call. If this work package already has more than one target version, version alone is rejected; use target_versions instead. A change of version, target_versions, sprint or a version custom field is refused while the work package holds such an assignment in a project OPENPROJECT_READ_PROJECTS does not cover, because the change would remove it. estimated_time, remaining_time, duration accept ISO8601 duration strings (e.g., 'PT8H' for 8 hours, 'PT1H30M' for 1.5 hours, 'P1D' for 1 day); omit to leave unchanged, or pass 'none' to clear the field. percentage_done is an integer 0-100. Setting status to a closed status auto-fills percentage_done=100 and remaining_time=PT0H when you don't supply them explicitly and OpenProject's schema reports those fields as writable (on instances using status-based progress calculation, OpenProject already derives them itself and this is skipped). On such an instance, explicitly passing percentage_done together with a closing status is rejected with a hard validation error (percentageDone is not writable there) rather than silently ignored; omit percentage_done and let OpenProject derive it instead. due_date's non-working-day shift and the confirm/preview contract work exactly as documented on create_work_package.

Input Schema

NameRequiredDescriptionDefault
typeNo
parentNo
sprintNo
statusNo
confirmNofalse: preview only, nothing changes. true: applies it; get the user's approval of the preview first.
subjectNo
versionNo
assigneeNo
categoryNo
due_dateNo
durationNo
priorityNo
start_dateNo
descriptionNo
responsibleNo
custom_fieldsNo
project_phaseNo
estimated_timeNo
remaining_timeNo
percentage_doneNo
target_versionsNo
work_package_idYesWork package id (e.g. 952) or display id (e.g. "PROJ-51"), not the bare number 51.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.4

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far beyond what the annotations convey: the description discloses that the patch is validated first, that omitted fields stay unchanged, that 'none' is a sentinel for clearing, that version/target_versions are mutually exclusive, that certain changes are refused when the package holds an assignment in a project not covered by OPENPROJECT_READ_PROJECTS, and that a closing status auto-fills percentage_done/remaining_time with a hard-error edge case. This is exactly the context an agent needs to avoid a failed or destructive call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

After a one-line purpose statement the text becomes an undifferentiated block of field notes with no headings or grouping, and the percentage_done/closed-status caveat is spread over four sentences that restate the same derive-versus-explicit rule. Each fact is useful, but the lack of structure and the repetition cost the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-parameter mutation tool with no output schema, no enum hints and heavy instance-dependent behavior, the description covers the dangerous and non-obvious parts well. It falls short on describing what the call returns (preview payload vs. applied result) and leaves custom_fields entirely unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 9% schema description coverage across 22 parameters, the description carries almost the entire burden and largely does: assignee, parent, version, target_versions, sprint, estimated_time, remaining_time, duration, percentage_done and the 'none' unassign sentinel for assignee/responsible/category/project_phase are all explained with formats and examples. Gaps remain for custom_fields, type, priority and start_date, which are undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ('Update a work package'), so the operation is unambiguous. It does not, however, distinguish itself from the sibling bulk_update_work_packages or explain the boundary with create_work_package, which it only references as a documentation surrogate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the field-by-field semantics rather than stated, and there is a helpful prerequisite ('Call list_users to find ids') plus a pointer to create_work_package for the confirm/preview contract. But nothing tells the agent when to prefer this over bulk_update_work_packages, and no explicit when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools