Skip to main content
Glama
yugmarwaha

Todoist Weekly Review MCP

by yugmarwaha

Apply approved changes

apply_changes

Execute individually approved changes on Todoist tasks during weekly review: reschedule, set priority, move to project, reword, complete, or apply labels. Only applies changes you explicitly confirm.

Instructions

Executes an explicit, already-approved list of changes against Todoist. ONLY call this with changes the user has explicitly approved ITEM BY ITEM in chat. Never infer, batch, or add a change the user did not individually confirm — if the user vetoed or didn't respond to an item, leave it out of the changes array entirely.

Each change is { taskId, action, params? } where action is one of:

  • reschedule: params.dueDate (YYYY-MM-DD) OR params.dueString (Todoist natural language like "next monday"). Provide exactly one.

  • set_priority: params.priority, an integer 1-4, sent RAW to the API — 4 is highest/urgent, 1 is normal (inverse of the UI's P1 label). Do not remap.

  • move_to_project: params.projectName (a name, e.g. "Someday/Maybe"). The server finds the project by exact case-insensitive name, or creates it if missing, then moves the task there. This is the primary way to retire a task without deleting it.

  • reword: params.content, the new task text.

  • complete: no params. Marks the task done — the other way to retire a task.

  • apply_label: params.label. Fetches the task, appends the label if not already present, and saves it.

There is NO delete action in this server — tasks are never destroyed, only completed or moved. split also does not exist in v1.

Input validation note: the changes array is validated as a whole against a strict schema before any writes happen. If ANY item is malformed (unknown action, missing required params, wrong type), the ENTIRE call is rejected and NOTHING is written — no partial execution of a batch that contained a bad item. This is deliberately the safer of two valid designs. Once validation passes, each item is executed independently and the result reports success/failure per item (so a live API failure on one item, e.g. a task that was deleted in Todoist meanwhile, does not stop the others).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
changesYes
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: validation rejects the entire batch if any item is malformed, execution is per-item with independent success/failure reporting, and no delete action exists. This covers key safety and execution model details.

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?

The description is long but well-structured with clear sections for usage guidelines, action details, and validation behavior. Every sentence adds value given the complexity of six action types. Slightly verbose but justified; could be trimmed slightly without losing meaning.

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?

The description covers input comprehensively and mentions per-item result reporting, but does not provide output schema or detailed error response format. For a mutation tool with no output schema, this is fairly complete; minor gap on output specifics.

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

Parameters5/5

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

Since schema description coverage is 0%, the description adds extensive meaning by detailing each action type (reschedule, set_priority, etc.), their required params, and nuances like priority mapping (1-4, 4 highest) and project name matching (case-insensitive, auto-create). This is far beyond the raw 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?

The description clearly states the tool executes an explicit list of approved changes against Todoist, which is a specific verb+resource. It distinguishes itself from sibling read-only tools (get_overdue_tasks, get_projects) by being a mutation tool. The phrasing 'ONLY call this with changes the user has explicitly approved' reinforces its unique purpose.

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?

The first paragraph provides explicit instructions on when to use (only with explicit user approval), what not to do (never infer, batch, or add unconfirmed changes), and what actions are missing (no delete, no split). This gives clear guidance on appropriate usage and distinguishes from alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yugmarwaha/todoist-weekly-review-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server