A personal AI Chief of Staff that integrates multiple MCP servers (filesystem, fetch, context7, github, google_workspace, youtube, spotify, search, maps, document_intelligence, memory, system, image, planner, adaptive) to provide research, project management, adaptive learning from ChatGPT history, and tool orchestration.
Four tools with clear verb-noun naming (list_*, approve_*, reject_*) and solid descriptions (120-180 chars each). All have proper input schemas with enums and required fields. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameter descriptions are minimal (10-30 chars), lacking format guidance and constraints. No error handling guidance. Missing idempotency hints for write operations. Descriptions are adequate but not LLM-optimized per pattern:tool-description baseline (194 chars avg, 50-200 target).
Approve a pending learned fact, moving it into the Adaptive Profile — from then on it influences how Mads responds. Only call this when Sayan explicitly confirms he wants a specific candidate approved; never approve on his behalf without him seeing the statement.
List facts already approved into the Adaptive Profile — what Mads has actually learned about Sayan's identity/contact info, preferences, decisions, workflows, and constraints so far. Check this (or search_memory, which also covers the Adaptive Profile) before asking Sayan to repeat any personal or contact details.
List learned facts (identity/preferences/decisions/workflows/constraints) waiting for Sayan's approval, from a ChatGPT history import. Sorted by confidence, highest first.
Reject a pending learned fact — it will not enter the Adaptive Profile.
No output schemas documented. LLMs cannot infer what fields list_pending_candidates or list_adaptive_profile return, blocking downstream tool chaining and data extraction.
Write operations (approve_candidate, reject_candidate) lack idempotency hints and error recovery guidance. No confirmation step or dry-run mode for irreversible state changes.
Parameter descriptions are minimal (10-30 chars). 'candidate_id' lacks format guidance (integer range, source). 'category' enum is documented but no guidance on what each category means or when to filter.
No error handling guidance. What happens if candidate_id is invalid? Does approve_candidate return a success/failure status? Can it be retried safely?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
list_pending_candidates and list_adaptive_profile lack pagination parameters (limit, offset, cursor). No indication of result count limits or how to handle large datasets.