MCP server exposing LifeOS capabilities to local agents over stdio. Provides reads and additive writes to personal life system stores (memory, reminders, finance, health).
Lifeos exposes 9 tools with complete input schemas and descriptions. Naming follows verb_noun convention (memory_search, create_reminder, log_finance_entry). Descriptions are present and actionable (avg ~100 chars), explaining WHAT each tool does and WHEN to use it. However, several critical gaps reduce quality: (1) No output schemas documented, LLMs cannot predict response structure for chaining; (2) Parameters lack constraints (enums, ranges), e.g., 'kind' in log_finance_entry accepts free-form strings instead of enum; (3) No error handling guidance, tools return success/failure but don't guide recovery; (4) Missing idempotency/retry semantics for write operations; (5) No permission/scope declarations. Read-only tools (memory_search, recent_conversations, list_reminders, finance_summary, health_recent) are well-designed for discovery. Write tools (add_fact, create_reminder, log_finance_entry, log_health_entry) lack confirmation/dry-run patterns and destructive-hint annotations.
Store a new fact in the assistant's long-term memory. Returns its id.
Create a reminder. when_iso is ISO-8601 (e.g. '2026-12-01T09:00:00+00:00'); omit it to schedule for now.
Aggregate finance totals (by kind) over the last *days* days.
Return recent health entries (symptoms, medications, vitals, …).
List reminders. status='pending' (default) returns active ones; anything else returns recent reminders from the last 30 days.
Record a finance entry. kind is one of expense|income|savings|debt_payment|big_purchase|note. amount must be non-negative.
Record a health entry. kind is one of symptom|medication|vital|condition|note.
No output schemas documented. LLMs cannot predict response structure, making tool chaining and field extraction error-prone. E.g., memory_search returns 'matching nodes' but structure is undocumented.
Free-form string parameters lack enum constraints. 'kind' in log_finance_entry and log_health_entry accepts arbitrary strings instead of enums (expense|income|savings|debt_payment|big_purchase|note and symptom|medication|vital|condition|note). LLMs will hallucinate invalid values.
Write operations lack error handling guidance and confirmation patterns. No dry-run, no recovery hints, no idempotency markers. Agents cannot safely retry log_finance_entry or create_reminder without risking duplicates.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Full-text search over the assistant's knowledge graph (facts, people, events). Returns matching nodes.
Return the most recent chat turns with the assistant, oldest first.
No permission/scope declarations. Tools do not declare what permissions they require (e.g., 'read:memory', 'write:reminders'). Prevents least-privilege agent configuration and audit clarity.
Numeric parameters lack range constraints. 'limit' in memory_search and recent_conversations, 'days' in finance_summary and health_recent have no min/max. LLMs may pass absurd values (limit=999999, days=10000).