Skip to main content
Glama
andreasd083

amazing-marvin-complete-mcp

mark_project_done

Idempotent

Close a project and its open tasks, in two steps. Step 1 (without confirm_code): reads the project and its open children, lists them with the warning that they too will be marked done, and returns a code. Nothing is written.

Instructions

Close a project and its open tasks, in two steps. Step 1 (without confirm_code): reads the project and its open children, lists them with the warning that they too will be marked done, and returns a code. Nothing is written. Step 2 (confirm_code from step 1): reads the children again; if the code no longer matches, nothing is closed and the response gives the new list and code. Otherwise each open task is checked off like mark_done (/markDone and reminder cleanup) and the project is closed last with a /doc/update of the app's five fields: done, doneAt and workedOnAt (now), day (the project's day, or today if it has none) and doneDate (same as day) — as the app does. The deadline (dueDate) is not touched. The app itself refuses to close a project with open children; this tool closes them on purpose. The children are checked off with /markDone, which does not set workedOnAt and does not stamp fieldUpdates — the app sets workedOnAt on the children. Stops in step 1 without a code if an open child is a sub-project, a habit task or an occurrence of a recurring task — close those first (the app's behavior there is untested). Completed projects do not show in get_categories. Undo in the app; unmark_done refuses projects. If a step fails the response says which were done; the project then stays open. Cost: step 1 two calls; step 2 three, plus one per task and two more per task with reminders.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to close
confirm_codeNoThe code from step 1. Without a code only the open children and the code are shown; nothing is closed

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.7.3

TDQS

A4.8/5.0
Behavior5/5

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

Far exceeds the annotations: it discloses that step 1 writes nothing, the exact /doc/update fields applied (done, doneAt, workedOnAt, day, doneDate), that dueDate is deliberately untouched, that children are closed via /markDone without workedOnAt or fieldUpdates, that a stale code aborts silently, and that partial failure leaves the project open with a per-target report. It also notes the tool intentionally bypasses the app's refusal to close projects with open children. No contradiction with the given hints (closing is reversible via app undo, so destructiveHint=false holds).

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 two-step model is front-loaded and the remaining content is dense edge-case and cost detail, most of which earns its place. It is a long, single-block paragraph with a few expendable clauses ('as the app does', repeated /markDone caveats), so it is slightly heavier than strictly necessary but far from padded.

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?

For a destructive-but-reversible two-phase tool with an output schema present, the description covers everything the agent needs: preconditions, abort conditions, per-step call costs, partial-failure semantics, and reversal path. Return-value formatting is correctly left to the output schema.

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%, so the baseline is 3, but the description adds real semantics on top: confirm_code is not just an opaque string but the artifact of step 1, and its absence changes the tool from a read into a no-write preview, while a stale code produces a re-listing rather than an error. That meaning goes beyond what the schema property text conveys.

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?

Opens with a specific verb and resource: 'Close a project and its open tasks, in two steps.' It immediately distinguishes itself from the sibling mutators (mark_done, unmark_done, update_category_or_project) and explicitly notes that unmark_done refuses projects and completed projects don't show in get_categories. An agent can tell what this does and what it is not 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?

Explicit when-to-use guidance via the two-step protocol: step 1 without confirm_code only reads and returns a code; step 2 with the code performs the close. It names preconditions to clear first (sub-projects, habit tasks, recurring occurrences) and the alternative for reversal ('Undo in the app; unmark_done refuses projects'). Nothing about selecting or sequencing the tool is left to inference.

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