Skip to main content
Glama
Todoist AI MCP Server
by todoist

reschedule-tasks

Destructive

Move tasks to new dates while preserving recurring schedules and repeat patterns. Use it to change a task's date or time without wiping recurrence.

Instructions

Reschedule tasks to new dates while preserving recurring schedules. Unlike update-tasks (which replaces the entire due string and can wipe recurrence), this tool changes only the date (and duration, if given), keeping recurrence patterns intact. Use this when moving recurring tasks to a different date or time without altering their repeat pattern. Without a due date, the deadline moves.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "tasks": "<tasks>"
    },
    "name": "reschedule-tasks"
  }
}

Input Schema

NameRequiredDescriptionDefault
tasksYesThe tasks to reschedule with their new dates.

Output Schema

NameRequiredDescriptionDefault
tasksYesThe rescheduled tasks.
failuresYesTasks that could not be rescheduled, with reasons.
totalCountYesThe total number of tasks rescheduled.
rescheduledTaskIdsYesThe IDs of the rescheduled tasks.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv14.0.3
    • addedOutput schema / properties / failures
      Added value: +{
      +  "description": "Tasks that could not be rescheduled, with reasons.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "item": {
      +        "description": "Usually the ID of the item that failed.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "item",
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "tasks",
      -  "totalCount",
      -  "rescheduledTaskIds"
      -]New value: +[
      +  "tasks",
      +  "totalCount",
      +  "rescheduledTaskIds",
      +  "failures"
      +]
  2. Changed1 schema field changedv13.10.1
    • addedInput schema / properties / tasks / items / properties / duration
      Added value: +{
      +  "description": "Optional new duration, e.g. for time-blocking: \"15m\", \"1h\", \"2h30m\".",
      +  "type": "string"
      +}
  3. Changed2 schema fields changedv13.8.4
    • removedOutput schema / properties / tasks / items / properties / recurring / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • addedOutput schema / properties / tasks / items / properties / recurring / type
      Added value: +[
      +  "boolean",
      +  "string"
      +]
  4. Changed1 schema field changedv13.3.0
    • changedOutput schema / properties / tasks / items / properties / duration / description
      Previous value: -"e.g. \"2h30m\"."New value: +"e.g. \"2h30m\", or \"3d\" for a day-based duration."
  5. Changed1 schema field changedv13.2.7
    • addedOutput schema / properties / tasks / items / properties / isDeleted
      Added value: +{
      +  "description": "True when deleted; absent otherwise.",
      +  "type": "boolean"
      +}
  6. Changed2 schema fields changedv13.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  7. Changed18 schema fields changedv12.5.3
    • changedOutput schema / properties / tasks / items / properties / addedAt / description
      Previous value: -"When the task was created (ISO 8601 format)."New value: +"ISO 8601."
    • removedOutput schema / properties / tasks / items / properties / assignedByUid / description
      Removed value: -"The UID of the user who assigned this task."
    • changedOutput schema / properties / tasks / items / properties / checked / description
      Previous value: -"Whether the task is checked/completed."New value: +"Whether the task is completed."
    • changedOutput schema / properties / tasks / items / properties / completedAt / description
      Previous value: -"When the task was completed (ISO 8601 format)."New value: +"ISO 8601."
    • changedOutput schema / properties / tasks / items / properties / content / description
      Previous value: -"The task title/content."New value: +"Task title."
    • changedOutput schema / properties / tasks / items / properties / deadlineDate / description
      Previous value: -"The deadline date of the task (ISO 8601 format)."New value: +"ISO 8601."
    • removedOutput schema / properties / tasks / items / properties / description / description
      Removed value: -"The task description."
    • changedOutput schema / properties / tasks / items / properties / dueDate / description
      Previous value: -"The due date of the task (ISO 8601 format)."New value: +"ISO 8601."
    • changedOutput schema / properties / tasks / items / properties / duration / description
      Previous value: -"The duration of the task (e.g., \"2h30m\")."New value: +"e.g. \"2h30m\"."
    • removedOutput schema / properties / tasks / items / properties / id / description
      Removed value: -"The unique ID of the task."
    • changedOutput schema / properties / tasks / items / properties / isUncompletable / description
      Previous value: -"Whether the task is uncompletable (organizational header)."New value: +"An organizational header, not a real task."
    • removedOutput schema / properties / tasks / items / properties / labels / description
      Removed value: -"The labels attached to this task."
    • removedOutput schema / properties / tasks / items / properties / parentId / description
      Removed value: -"The ID of the parent task (for subtasks)."
    • changedOutput schema / properties / tasks / items / properties / priority / description
      Previous value: -"The priority level: p1 (highest), p2 (high), p3 (medium), p4 (lowest)."New value: +"p1 is highest, p4 lowest."
    • removedOutput schema / properties / tasks / items / properties / projectId / description
      Removed value: -"The ID of the project this task belongs to."
    • changedOutput schema / properties / tasks / items / properties / recurring / description
      Previous value: -"Whether the task is recurring, or the recurrence string."New value: +"False when not recurring, otherwise the recurrence string."
    • removedOutput schema / properties / tasks / items / properties / responsibleUid / description
      Removed value: -"The UID of the user responsible for this task."
    • removedOutput schema / properties / tasks / items / properties / sectionId / description
      Removed value: -"The ID of the section this task belongs to."
  8. Changed1 schema field changedv10.5.0
    • addedOutput schema / properties / tasks / items / properties / addedAt
      Added value: +{
      +  "description": "When the task was created (ISO 8601 format).",
      +  "type": "string"
      +}
  9. First observedv10.4.2

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is lower; the description still adds real context by stating that only the date/duration changes and recurrence is preserved, and it explains the date-only case. It does not explain what the destructive flag actually destroys (existing due date/time values) or how batch failures are handled, leaving a gap.

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?

Three tightly front-loaded sentences: purpose, differentiation from the sibling, then the use case. The trailing 'Without a due date, the deadline moves' is vague and slightly undermines an otherwise economical definition.

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?

With annotations, a full schema, and an output schema, the description covers the essential semantics for a single-array-parameter mutation tool. The only shortfall is the undefined behavior when no existing due date is present, which is exactly the case the last sentence gestures at but does not explain.

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

Parameters3/5

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

Schema coverage is 100% and the nested id/date/duration fields are fully documented in the schema, so the baseline is 3. The description only restates that duration is optional and that date drives the change, adding no syntax or edge-case meaning beyond 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 ('Reschedule tasks to new dates') plus the defining scope ('while preserving recurring schedules'), and explicitly contrasts with the update-tasks sibling whose behavior differs. An agent can distinguish this from update-tasks without opening either 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?

Gives an explicit when-to-use condition ('Use this when moving recurring tasks to a different date or time without altering their repeat pattern') and names the alternative with the reason to avoid it (update-tasks replaces the whole due string and can wipe recurrence). The routing decision is unambiguous.

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