MCP server that helps AI Agents track progress, manage Goals and Tasks in a hierarchical model, and maintain context across sessions.
GoalTracker demonstrates solid tool design with 14 well-named, verb-prefixed tools (goal_create, task_list, etc.) and comprehensive input schemas using Zod validation. All tools have descriptions (avg ~150 chars, within 10-1024 baseline). Parameters are typed with enums for constrained values (status, priority, note type). However, output schemas are not documented in the tool definitions, responses are JSON-stringified but the structure is not formally declared. Error handling returns isError flags but lacks recovery guidance. Tool composition is strong (single responsibility, clear chaining via IDs), and descriptions explain WHEN to use tools (e.g., goal_get_context as 'warm-up call'). Missing: output schema documentation, actionable error messages, and tool annotations (readOnlyHint/destructiveHint).
Save the Agent's current context summary before the session ends. Loaded back via goal_get_context as last_checkpoint.
Create a new Goal. Called once when starting a new project. description is required — a 1-2 sentence summary of what this goal is about, for anyone (or any future session) scanning goal_list later.
The single warm-up call for a context-reset Agent: returns the goal (including is_stale), spec, milestones with task counts, out-of-range milestones, aggregate progress, and the last checkpoint. Call this at the start of every session.
List Goals, optionally filtered by status. Use to find a goal_id or get an overview of all projects. Each Goal includes is_stale (true when an "active" Goal has had no Goal/Task activity for over 14 days).
Close a finished Goal, archive an inactive one, or reactivate an archived Goal. Merges goal_complete + goal_archive + goal_reactivate.
Explicitly approve a Milestone that has fewer than 2 active tasks, lifting the restriction that blocks task_update_status from starting work on its tasks. Only call this after actually confirming with the user that a small Milestone is intentional — not as a shortcut to unblock yourself.
Output schemas not documented. Tool responses are JSON-stringified but the structure (fields, types, nested objects) is not formally declared. LLMs cannot plan downstream calls or extract data reliably without knowing what fields to expect.
Error handling lacks recovery guidance. CallToolRequestSchema catches errors and returns isError=true with a message, but does not categorize errors (retryable vs user-fixable vs fatal) or suggest next steps. E.g., 'Error: unknown tool' gives no guidance; should suggest 'Call list_tools() to see available tools.'
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared in tool definitions. Agents cannot distinguish safe (read-only) tools from destructive ones (goal_update_status, task_update_status, checkpoint_save) without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Break a Goal into a major phase. Status is auto-computed from its tasks. When order is omitted, it auto-assigns to max(order in this goal) + 1. description is not required by this tool, but use it to state which breakdown strategy this milestone follows and why — not just a restated title.
Create or overwrite the Spec for a Goal (overview, acceptance criteria, constraints, out of scope). Create-or-replace semantics — call again any time the spec changes.
Periodic review / pre-closure check. Returns the goal (including is_stale), aggregate progress, milestones with task counts, blocked tasks, and the acceptance criteria list. Data only — no suggestions.
Record a progress update, blocker, technical decision, evidence, or uncertainty on a task.
Create a task within a milestone. No hard cap — the response includes milestone_active_task_count so the Agent can judge against the 2-5 active-task guideline. description is not required by this tool, but write one substantial enough that a future session with zero memory of this conversation could act on it — a bare restated title is not enough.
Inspect a task's full detail, including all its notes.
Find tasks to work on or review, filtered by goal, milestone, status, and/or priority.
Update a task's status (pending, in_progress, completed, blocked, cancelled). reason is required for blocked and cancelled.
Pagination not implemented for list tools. goal_list and task_list return all matching items without limit/offset/page parameters. Large result sets will blow context windows. Baseline: list tools should accept limit (default 20-50) and offset/cursor.
Confirmation step missing for irreversible operations. goal_update_status (to 'completed' or 'archived'), task_update_status (to 'cancelled'), and checkpoint_save modify state without a dry-run or confirmation. Agents can accidentally close goals or cancel tasks.