A FastAPI-based productivity assistant that orchestrates multi-agent workflows for task management, calendar scheduling, and note-taking. It integrates with optional MCP tool endpoints for calendar, task manager, and notes services.
All three tools have generic, undescribed input schemas with no parameter-level documentation. Tool names lack action verbs (calendar, task_manager, notes are nouns, not verb_noun patterns). Input schemas use generic 'action' and 'payload' fields instead of explicit, typed parameters. No output schemas documented. Descriptions are present but vague (e.g., 'Supports syncing calendar events' lacks WHEN/WHY/HOW context). No error handling guidance. This is a dispatcher pattern masquerading as MCP tools, the actual tool logic is hidden behind string-based action routing, making it impossible for LLMs to understand what parameters each action accepts.
MCP tool client for calendar operations. Supports syncing calendar events based on user intent and timeframe.
MCP tool client for note-taking operations. Supports capturing structured notes and research summaries.
MCP tool client for task management operations. Supports creating tasks from goals and managing task backlogs.
No input schemas for any tool. All three tools accept generic 'action' (string) and 'payload' (object) with no type constraints, enum values, or parameter descriptions. LLMs cannot determine valid actions or required payload fields.
Tool names are nouns, not action verbs. 'calendar', 'task_manager', 'notes' do not follow verb_noun convention (e.g., sync_calendar_events, create_task, capture_notes). LLMs cannot infer intent from names alone.
Descriptions are generic and lack WHEN/WHY/HOW context. 'Supports syncing calendar events based on user intent and timeframe' does not explain when to call this vs. other tools, what prerequisites exist, or what the output structure is.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | 2026-07-28+ | v2 |
No output schemas documented. Responses are opaque to LLMs. Cannot plan downstream tool calls or extract required fields (e.g., task_id, event_id) for chaining.
Action routing is hidden in string payloads (e.g., 'calendar.sync_events', 'task.create_from_goal'). These are not registered as separate tools. LLMs see only three generic dispatchers, not six distinct operations. Violates single-responsibility principle.