Skip to main content
Glama

bulk_update_tasks

DestructiveIdempotent

Apply the same partial update to many tasks at once. Pass taskIds (max 50) and any combination of: status (TODO/IN_PROGRESS/REVIEW/DONE/BLOCKED), priority (LOW/MEDIUM/HIGH/CRITICAL, a ranking label that does not put a task on the critical path), shiftDueDateDays (positive or negative integer to add to each task's dueDate). Per-task failures are reported in errors but do not abort the whole call. Permission: task.edit.any on each task's project. PREFER bulk_update_status when the ONLY change is status (cheaper, atomic, single parent-rollup pass).

Input Schema

NameRequiredDescriptionDefault
dryRunNoPreview only: return the per-task diff (current vs proposed) + which tasks would be skipped, without committing. Writes nothing, fires no side effects.
statusNo
taskIdsYesUp to 50 task ids.
priorityNoPriority label (LOW/MEDIUM/HIGH/CRITICAL) that people set to rank work. It is not the critical path: the schedule engine computes that from dependencies, durations and the calendar, and priority does not change it.
shiftDueDateDaysNoInteger days to add to each task's dueDate. Negative = earlier.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / priority / description
      Added value: +"Priority label (LOW/MEDIUM/HIGH/CRITICAL) that people set to rank work. It is not the critical path: the schedule engine computes that from dependencies, durations and the calendar, and priority does not change it."
  2. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint/readOnlyHint/idempotentHint, but the description adds genuinely new behavior: a hard batch cap of 50, partial-failure semantics ('per-task failures are reported in `errors` but do not abort the whole call'), and the required permission. It stops short of explaining rollback scope or what a successful response body contains, keeping it at a strong 4 rather than 5.

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

Conciseness4/5

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

Front-loads the purpose, then parameters, then failure/permission semantics, then the alternative tool – a logical order with almost no filler. The priority definition duplicates the schema's own wording, a minor redundancy that keeps it just under 5.

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

Completeness5/5

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

There is no output schema, and the description compensates by naming the `errors` field for partial failures and by specifying the batch limit and permission. Combined with the alternative routing, an agent has everything needed to invoke and interpret the call correctly.

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 80% schema coverage the baseline is 3, but the description adds real meaning: priority is explained as a ranking label that does NOT drive the critical path (a subtle and valuable disambiguation), and shiftDueDateDays is clarified as a relative signed offset. taskIds and status simply restate the schema.

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?

States a specific verb and resource ('Apply the same partial update to many tasks at once') and immediately distinguishes itself from bulk_update_status by name. An agent can tell it apart from update_task (single) and bulk_update_status (status-only) without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the alternative and the condition that selects it: 'PREFER bulk_update_status when the ONLY change is status (cheaper, atomic, single parent-rollup pass)'. It also states the permission prerequisite (task.edit.any per project), so the routing decision needs no inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.