AI-native task management MCP server with support for PostgreSQL and SQLite, featuring task management, development logs, and plugin ecosystem for GitHub, Skillflows, and Supabase integration
Taskr MCP provides 22 tools across task management, devlogs, GitHub, skillflows, and Supabase integrations. All tools have descriptions and visible input schemas with types and descriptions for parameters. However, several critical issues limit overall quality: (1) Output schemas are not documented, the rubric requires documentation of what fields are returned so LLMs can plan downstream calls; (2) Error handling guidance is absent, tools provide no recovery hints, categorization of retryable vs fatal errors, or actionable error messages; (3) Parameter descriptions lack constraint details (e.g., taskr_list's 'limit' has no min/max bounds, status/priority values are vague); (4) Some parameter names are ambiguous (e.g., 'name_or_id' in skillflow_get forces LLMs to reason about which to pass); (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear READ/WRITE distinctions; (6) Generic descriptions for some tools (e.g., taskr_update says 'Update an existing task' but doesn't explain idempotency or side effects). Positive: tool naming is consistently verb-first and clear (taskr_create, taskr_assign, github_create_issue), all parameters have type annotations, descriptions exist for all parameters, and the modular plugin architecture is well-structured. The server is in Alpha (v0.1.0) and shows production intent but needs refinement in output documentation, error handling, and schema constraint details.
Create a development log entry. Devlogs are persistent records for AI agent memory.
Get full devlog entry by ID.
List recent devlog entries.
Create a GitHub issue.
Create a pull request with optional issue linking.
List GitHub issues.
Create a new skillflow workflow definition. Skillflows are tracked, discoverable workflows that AI agents can execute.
No output schemas documented. Tools define input schemas but return types are not specified. LLMs cannot plan downstream tool calls or extract required fields (e.g., does taskr_create return task_id? What fields does taskr_list return?). This violates the requirement that tools document what fields are returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Start executing a skillflow. Creates an execution record and returns the skillflow steps to follow.
Get a skillflow by name or ID.
List skillflows with optional filters.
Search skillflows by name, title, description, and tags.
Deploy a Supabase Edge Function.
List Edge Function deployment history.
List applied database migrations.
Execute a SQL query against Supabase PostgreSQL.
Assign a task to a user.
Mark a task as complete.
Create a new task.
List tasks with optional filters.
Search tasks by title and description.
Get detailed information about a task.
Update an existing task.
No error handling guidance or recovery hints. Tools do not specify what errors can occur, how to recover, or whether errors are retryable. Example: supabase_sql_query could fail with syntax errors (user-fixable), permission errors (fatal), or timeout (retryable), but the tool provides no guidance. LLMs cannot decide whether to retry, ask the user, or give up.
Numeric parameter bounds missing. taskr_list and many other tools accept 'limit' but do not specify min (e.g., 1) or max (e.g., 100, 1000). Unbounded numbers allow LLMs to pass absurd values that break APIs or cause timeouts. Similarly, status and priority parameters cite examples in descriptions but lack formal enum constraints.
Ambiguous parameter names force reasoning overhead. skillflow_get uses 'name_or_id', which is overloaded, LLMs must reason about which to pass. Best practice: provide separate parameters (skillflow_name, skillflow_id) or accept both in a smarter resolution strategy. Similarly, parameter descriptions do not explain how conflicts are resolved.
No tool annotations. The server does not use readOnlyHint, destructiveHint, or idempotentHint despite clear READ/WRITE distinctions (marked in Risk column). Annotations help clients optimize caching, confirm before execution, or retry safely. Modern MCP spec includes these.
Incomplete parameter descriptions. Many parameters like 'title', 'description', 'content' lack length limits, character restrictions, or format guidance. LLMs cannot infer constraints and may pass invalid values. Baselines show A+ tools average 72 chars per param description; many here are under 50.
No pagination metadata in descriptions. Tools like taskr_list accept 'limit' but descriptions do not explain: (a) What is returned if results exceed limit? (b) Is there a next_cursor or offset field? (c) How does the LLM fetch page 2? Without this, agents cannot reliably paginate.
Generic descriptions for some tools. taskr_show says 'Get detailed information about a task' (23 chars) and taskr_close says 'Mark a task as complete' (24 chars), these are near the minimum and lack context about when to call them vs similar tools, prerequisites, or what 'detailed' means.
No idempotency guarantees documented. taskr_assign and taskr_update do not state whether they are idempotent. If an agent retries due to a timeout, will it create duplicates or silently re-assign? This is critical for agent reliability.
supabase_sql_query lacks safety guardrails in description. The tool accepts a 'read_only' flag (default True) to prevent DDL, but the description does not explain what 'read_only' actually prevents, what happens if it is False, or why an agent should use it. Risk of accidental data destruction.