Skip to main content
Glama
andreasd083

amazing-marvin-complete-mcp

unmark_done

Idempotent

Undo a task's completion, and the habit's record. Projects and categories: refuses without writing — a closed project is reopened in the app.

Instructions

Undo a task's completion, and the habit's record. Projects and categories: refuses without writing — a closed project is reopened in the app. Sets done=false and clears doneAt via /doc/update (Full Access Token); the app's own undo leaves doneAt in place. A task that never had a day (firstScheduled 'unassigned' and no fieldUpdates.day stamp) got its day from /markDone: the day that mark_done set is removed (stored as 'unassigned'; the app's own undo writes null — both mean no day). Otherwise the day stays. As in the app: the clock time's reminder (T) is not restored — the time does not remind until it is set again — but own reminders in the reminders list still apply. Habit task: the habit's latest record is undone with /updateHabit undo and habitRepAt is cleared, but only if the history's last entry is the task's habitRepAt; otherwise the response says so and the habit is left untouched (undo always takes the latest entry). Open habit task (a partial record on a habit with a count): nothing is written — undo the record with record_habit undo=true, as the app's undo does. Kudos are not adjusted; reward points are undone with unclaim_reward_points. A permanent 500 = the document does not exist.

Input Schema

NameRequiredDescriptionDefault
item_idYesTask ID (not a project — those are reopened in the app)

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.7.3
    • changedInput schema / properties / item_id / description
      Previous value: -"Task ID"New value: +"Task ID (not a project — those are reopened in the app)"
  2. First observedv1.3.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false) but the description adds substantial non-structured behavior: sets done=false and clears doneAt via /doc/update, refuses on projects/categories, day-removal semantics for firstScheduled 'unassigned', that the clock-time reminder is not restored, habit undo only fires if the last history entry matches habitRepAt, and that a permanent 500 means the document does not exist. This is well beyond what annotations convey.

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 core purpose is front-loaded in the first sentence, and every subsequent sentence carries a distinct behavioral edge case, so the length is justified by the operation's complexity. The dense run-on structure makes it harder to scan than ideal, but there is little wasted text.

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?

An output schema exists, so return values need not be explained, and the description still covers the tricky outcomes (refusal on projects, untouched habit on history mismatch, permanent 500). Nothing an agent needs to call this correctly is missing.

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?

Schema coverage is 100% and the schema description already states 'Task ID (not a project — those are reopened in the app)', so the description largely reinforces rather than adds new parameter syntax. It does add the downstream consequence of passing a project id, giving slight value 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+resource ('Undo a task's completion, and the habit's record') and immediately distinguishes itself from its inverse sibling mark_done and from record_habit. An agent can tell exactly what this does without opening the 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 routes alternatives: for an open habit task with a count it says nothing is written and to use record_habit undo=true instead; for reward points it points to unclaim_reward_points; for projects it says the call refuses and the app reopens it. When-to-use and when-to-use-something-else are both covered.

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