Generic MCP server for EverMe memory system — provides memory search, context retrieval, and memory persistence tools for any MCP host (Cursor, Cline, generic JSON-RPC clients). Automatic memory recall via hooks, plus bundled MCP server.
Four tools with complete input schemas and detailed descriptions. mem_search and mem_save_turn have excellent, LLM-optimized descriptions (200+ chars) with clear usage guidance and parameter constraints. mem_context and mem_save_fact descriptions are solid but less detailed. All tools have proper JSON Schema with typed parameters and descriptions. However, output schemas are not documented, LLMs cannot predict return structure. No error handling guidance (e.g., what happens on search miss, extraction failure, or API timeout). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics. mem_save_turn and mem_save_fact are write operations but lack confirmation/dry-run patterns.
Read the current user's durable Profile snapshot ONLY. This tool never performs semantic search and never returns episodic memories, raw messages, agent cases, or agent skills. Call it ONCE at the start of a session, and only when no <everme_profile> block was injected. Do NOT use it as a fallback for recalling past decisions, old sessions, or task context — that is mem_search's job.
Extract and persist a durable user fact (preference, habit, trait, long-term goal, or decision) into the Profile. Call this immediately when the user states such a fact. Only `extracted:true` / `profileUpdated:true` means the profile really updated; on `no_extraction` do NOT tell the user the fact was remembered, and do not auto-retry.
Persist a conversation trajectory in realtime via /mem/agent-memory. Use sessionKey as conversationId. Call this when a task was solved in a way worth reusing AND the trajectory is not already captured by the plugin's automatic transcript save. Pass the COMPLETE round-trip — messages: [{role, content, timestamp?, toolCalls?, toolCallId?}] — EverOS only extracts agent_case / agent_skill from trajectories carrying the full tool round-trip. By default flush=true: extraction into episodic / agent_case / agent_skill runs right away. Pass flush=false for append-only accumulation. The primary trajectory path extracts episodic / case / skill memory; chat-dual-write backends may also update the user's Profile. Check profileUpdated for the derived profile verdict, and use mem_save_fact for deliberate durable user facts.
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). mem_search should document result format (entries array with episodic/profile/case/skill/transcript fields), mem_context should document Profile snapshot structure, mem_save_turn/mem_save_fact should document success/failure response format.
No error handling guidance. Tools lack recovery hints for common failures: search miss (no results), extraction failure (no_extraction), profile cache miss, API timeout. LLMs cannot self-correct without actionable error messages.
Write operations (mem_save_turn, mem_save_fact) lack confirmation/dry-run pattern. Agents can persist incorrect facts or malformed trajectories without preview. No idempotent/destructive annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Search EverMe memory for entries relevant to a free-text query. Returns the top-K matching entries (episodic, profile, agent cases/skills, recent raw transcript) rendered as markdown; rows under the provisional transcript header are not yet extracted and must not be quoted as established facts. Call this proactively — without being asked — whenever the user references prior conversations, earlier decisions, project conventions, or previously solved problems ("what did we say about X", "remember when…", "like last time", "did we fix this before", "continue where we left off"). Skip the call when the host already injected a non-empty, relevant <everme_recall> block this turn, and do not repeat an identical query within the same turn. `query` is KEYWORDS ONLY — the topic, not the conversation. Two to eight words, under ~100 characters, no sentences copied from the transcript. Never pass the user's whole message, a file, a log, a diff, or your own reasoning: the search embeds whatever you send, so boilerplate crowds out the topic and the results get worse. Good: "oauth token rotation". Bad: the last three turns pasted in. Rely on the default topK of 10; only raise it if a first search genuinely missed.
mem_context 'query' parameter marked deprecated but still required in schema. Unclear if LLMs should pass empty string, null, or omit it. Deprecation path should be explicit (e.g., 'Ignored; pass empty string for compatibility').
mem_save_turn 'messages' array items lack schema definition. Type is 'object' with no properties documented. LLMs cannot validate message structure (required fields, field types) before calling.