Skip to main content
Glama

update_task

Idempotent

Modify specific fields on an existing task while preserving all other data, recurrence, and reminders. Use an etag to prevent overwriting changes made by others.

Instructions

Change fields on an existing task. Only the fields given are touched; everything else on the task — including recurrence, reminders and properties written by other CalDAV clients — is preserved. Pass null to clear a field. Pass an etag to make the write conditional on nobody else having changed the task first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dueNoDue date: "YYYY-MM-DD" for a whole day, "YYYY-MM-DDTHH:MM:SS" for a local time, or "...Z" for UTC. null removes it.
uidYesThe task uid.
etagNoEtag from get_task. The write is refused if the task changed since. Omit to overwrite unconditionally.
listNoTask list uri or display name.
startNoStart date, same format as due. null removes it.
pinnedNoNextcloud's pinned flag.
statusNoDefaults to NEEDS-ACTION on a new task.
summaryNoTask title.
locationNoFree-text location. null removes it.
priorityNoRFC 5545 priority: 1 is highest, 9 is lowest, 0 or null means none. The Tasks UI shows 1-4 as high, 5 as medium, 6-9 as low.
parentUidNouid of the parent task, making this a subtask of it. Must be in the same list. null detaches it to the top level.
sortOrderNoManual sort position within the list.
categoriesNoTags, replacing any already set. null or [] removes them all.
descriptionNoLonger notes. null or "" removes them.
dueTimezoneNoIANA zone for a local due time, e.g. "Europe/London". Stored as the equivalent UTC instant. Not valid with a whole-day date or a "Z" time.
hideSubtasksNoCollapse this task's subtasks in the Tasks UI.
startTimezoneNoIANA zone for a local start time.
percentCompleteNoProgress, 0-100. Set automatically to 100 when status becomes COMPLETED.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.2

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already provide readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds genuinely useful behavior beyond these: only the provided fields are modified, all other fields—including CalDAV-client-written properties—are preserved, null clears a field, and an etag makes the write conditional. This gives an agent a precise mental model of a non-destructive partial update.

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

Conciseness5/5

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

Three sentences with no fluff: the first states the core action, the second explains the partial-update and null-clearing model, and the third covers concurrency. Each sentence earns its place and the most important information is front-loaded.

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 an 18-parameter mutating tool with no output schema, the description covers the critical invocation semantics: partial update, preservation of unknown fields, null clearing, and etag-based concurrency. The main gap is the response shape or error payloads, though the etag sentence already signals the primary failure mode, so the tool remains safely callable.

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?

All 18 parameters have full schema descriptions, so the baseline is 3. The description raises that by adding cross-cutting semantics: partial updates preserve unspecified fields, null is the universal 'clear this field' convention, and etag changes the write semantics from unconditional to conditional. These meanings apply across many parameters and are not obvious from individual schema entries alone.

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

Purpose5/5

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

The description uses a concrete verb, 'Change fields', and a specific resource, 'an existing task', which immediately distinguishes this from create_task, delete_task, and get_task. The second sentence narrows the behavior to partial updates, making the tool's role unmistakable.

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

Usage Guidelines4/5

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

The description clearly frames when this tool is appropriate: updating existing tasks and touching only the fields supplied. It also explains the etag conditional-write behavior, which guides the agent on safe update patterns. It does not explicitly name sibling alternatives like create_task or complete_task or give exclusion criteria, so it stops short of a perfect 5.

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