An MCP server that manages a local SQLite to-do database with task creation, retrieval, status updates, and keyword search capabilities. Integrates with LangChain and supports multi-system orchestration including Gmail and web search.
Five tools with clear verb-noun naming (create_, fetch_, modify_, remove_, search_) and reasonable descriptions (100-200 chars). All tools have input schemas with type definitions. However, parameter descriptions are minimal or missing context about constraints and error cases. Output schemas are not documented. Error handling returns plain strings rather than structured guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Descriptions lack 'when to use' guidance and dependency hints. Overall: functional but below production baseline.
Creates a brand new to-do task item inside the database. Use this tool whenever the user explicitly asks to add, save, or write down a task.
Retrieves the complete catalog list of all tasks currently registered in the database. Use this tool when the user wants to check, view, or look over their to-do items.
Updates the current progress state of a specific task using its numerical ID. The status variable must strictly be one of: 'pending', 'in_progress', or 'completed'. Use this tool when the user says they finished a task, started working on it, or want to reset it.
Permanently deletes a specific task from the database using its unique numerical ID. Use this tool when the user explicitly asks to delete or remove a task from their list.
Searches and filters tasks in the database whose title or description contains the specific keyword. Use this tool when the user asks questions about specific existing tasks, projects, topics, or milestones.
Output schemas not documented. Tools return plain strings or lists without field definitions. LLMs cannot plan downstream calls or extract structured data reliably.
Parameter descriptions lack constraint details. 'new_status' in modify_todo_task_status mentions valid values in tool description but not in parameter schema. 'keyword' in search_tasks_by_keyword has no length or format guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). remove_todo_task is destructive but unmarked. fetch_all_tasks and search_tasks_by_keyword are read-only but unmarked. Agents cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Error responses are plain strings without recovery guidance. 'Error creating task: ...' or 'No task found with ID: ...' do not tell the LLM what to do next or whether to retry.
Descriptions lack 'when to use' context. Tool descriptions state WHAT they do but not WHEN to prefer one over another (e.g., when to use search_tasks_by_keyword vs fetch_all_tasks). LLMs must guess.