A model of you, built from your own AI history, on your machine. Every AI you use reads it. So every AI finally knows you. MCP server that adapts the persnallyd daemon to the Model Context Protocol.
Persnally MCP defines 2 tools with explicit schemas and descriptions. Both tools have rich, detailed descriptions that explain purpose, when to use, and what data structures are expected. Schemas are well-formed with nested objects, enums, and required fields. However, the server has significant weaknesses: (1) tool names lack clear action verbs, 'persnally_track' and 'persnally_context' are domain-specific but do not follow verb_noun convention (get_context, track_profile would be clearer); (2) parameter descriptions in the schemas are present but could be more LLM-optimized (some are verbose, others omit constraints); (3) no documented output schemas, descriptions explain what is returned conceptually, but formal response schemas are absent; (4) error handling guidance is minimal, no recovery hints or error classification. Tool descriptions themselves are exceptional (400-500 chars each, LLM-optimized), which elevates the score, but the lack of formal output schemas and weak naming conventions prevent a higher grade.
Get the user's personal context: who they are, what they're working on, and their current interests. Call this at the START of a conversation (or when personalization would improve your answer) so your responses fit this specific user instead of a generic one.
Track what builds the user's lasting context. Three kinds of signal, all optional — send whichever this conversation produced. TOPICS — what they're engaged with (interests, decisions, accepted/rejected options). - 1-5 per conversation; weight = centrality (0.1 brief … 1.0 main focus); depth = mention|moderate|deep; sentiment 'negative' deprioritizes; entities are specific names ("Next.js", not "web framework"). STYLE — HOW they write and work, so every AI can answer like them. High value, but easy to over-send: record only a CLEAR, REPEATED tell, never a one-off, at most 1-3 per conversation. Examples: - voice: "terse, no filler" · convention: "prefers pnpm over npm", "no default exports" · emphasis: "wants the falsification first" · format: "answers in bullet points" · workflow: "kills ideas fast". - Skip anything generic or already obvious. When unsure, don't. CORRECTIONS — when the user corrects something you (or their Persnally context) believed about them ("no, I actually…", "that's wrong, I…"). Record it VERBATIM in spirit — corrections become authoritative and outrank everything the model inferred. Send immediately when it happens, not at session end. The user opted in. Only these structured signals are stored, locally, never raw messages.
Tool names lack action verbs. 'persnally_track' and 'persnally_context' are domain-specific but do not follow the verb_noun convention (get_context, track_profile, update_profile) that LLMs use to infer intent. This reduces LLM clarity on what actions these tools perform.
No documented output schemas. Both tools describe their return value conceptually (e.g., 'Get the user's personal context'), but formal response schemas are absent. LLMs need explicit field lists and types to plan downstream calls and extract data reliably.
Limited error handling guidance. Tool descriptions do not explain what happens on failure (daemon unreachable, invalid input, permission denied), what the LLM should do next, or whether errors are retryable. The daemon-client error handling in the server code (DaemonUnreachable) exists but is not surfaced in the tool contracts.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
Parameter descriptions in 'persnally_track' are verbose and include implementation details. The 'topics' array description spans multiple paragraphs with examples of TOPICS, STYLE, and CORRECTIONS signals. While informative, this wastes tokens and could be split into clearer per-field guidance. The 'style' and 'corrections' objects lack individual parameter descriptions, only top-level descriptions exist.
No enum constraints on 'dimension' field in 'persnally_track' style array. The JSON schema correctly declares an enum (['voice', 'convention', 'emphasis', 'format', 'workflow']), but the parameter description does not explicitly list these values for LLM readability. LLMs may not consistently parse the schema enum.