Local-first personal preference MCP with Markdown store, capture pipeline, injection, and UI
This server has 17 tools with significant definition gaps. Most tools have basic descriptions (10-100 chars, well below the 194-char baseline), but critically, input schemas are inferred from code rather than explicitly visible in schema definitions. Parameters lack type constraints and enums. No output schemas are documented. Error handling is absent, tools return raw results without recovery guidance. The server mixes read-only and write operations without clear separation or confirmation patterns. Tool names are reasonable (verb_noun style) but descriptions are too terse to guide LLM selection.
Apply a fitting plan to update preferences
Capture preferences from a session or source path
Discover installed agents and their history sources
Get the latest fitting report and plan
Get the onboarding status for an agent
Get a preference decision for a task with optional context
Handle assistant message hook for preference capture
Input schemas are inferred from code, not explicitly defined. No JSON Schema with type constraints visible in tool registration. Parameters lack enums, ranges, and format specifications.
Descriptions are too brief (10-40 chars vs 194-char baseline). They lack WHAT/WHEN/WHY context needed for LLM tool selection. E.g., 'Get the onboarding status for an agent' does not explain when to call it or what it returns.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., get_preference_decision returns a result dict, but structure is unknown.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Handle session end hook for preference finalization
Handle session start hook for preference injection
Handle user message hook for preference capture and injection
Open the preference management UI panel
Prewarm preferences for a session initialization
Record feedback on a preference (confirm, reject, or correct)
Reject a fitting plan without applying changes
Resolve a conflict between two preferences
Start cold start capture and onboarding process
Synchronize injection artifacts for a session
Destructive operations (apply_fitting_plan, record_preference_feedback with 'reject' action) lack confirmation or dry-run patterns. No error recovery guidance.
Hook tools (hook_session_start, hook_user_message, etc.) have ambiguous names and unclear responsibilities. 'hook_' prefix is not a standard action verb. Unclear if these are meant for agent use or internal callbacks.