MCP server exposing FERNme as agent tools, so any MCP-capable agent can give a user persistent, glass-box memory. A user-owned memory layer for AI agents: zero-LLM deterministic core with optional human-approved enrichment.
FERNme exposes 14 tools with complete JSON schemas and descriptions. Naming is verb-forward (remember, recall_*, grant_*, forget_*) and generally clear. However, descriptions vary widely in quality: some are detailed (remember: 280+ chars with tag syntax), others are terse (health: 44 chars). Parameter descriptions are present but often generic ('Site identifier', 'User identifier'). Output schemas are not documented in the visible code, only input schemas are defined. Error handling is minimal; no recovery guidance or actionable error messages visible. Tools like forget_user and forget_document are destructive but lack confirmation/dry-run patterns despite remember_photo offering one. The 'graph' and 'health' tools appear inferred from compiled JS assets, not directly visible in source, capping their scores at 50.
Accept a suggested memory curation (tag, relationship, or other enrichment).
Forget one document from a user's memory. Requires consent.
Forget a photo/image asset from a user's memory. Requires consent.
Completely forget a user (delete all their memory data). Requires explicit consent withdrawal.
Grant or withdraw a user's consent to be remembered on a site.
Get the memory graph (nodes and edges) for a user, optionally filtered by context.
Get health status of the FERNme service.
Destructive tools (forget_document, forget_photo, forget_user) lack dry-run or confirmation patterns. No recovery guidance in error responses.
Output schemas not documented. LLMs cannot predict response structure for downstream tool chaining or field extraction.
Generic parameter descriptions ('Site identifier', 'User identifier') repeated across all tools. No guidance on format, constraints, or when to use each parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Import a document (FERNmark envelope or managed file) into a user's memory. Returns a dry-run report by default; set confirm=true to commit. Requires consent.
Get the token-minimal memory card for a user (what to inject into the prompt).
Get recent events for a user matching optional context attributes.
What each remembered tag MEANS: {tag: {gloss, context}}. Context is the sentence it came from; gloss is the supplied or templated one-liner.
Reject a suggested memory curation.
Record an interaction/preference for a user on a site (consent required). tags: namespaced 'ns:value' tokens, e.g. 'pref:concise', 'topic:python', '!likes:dairy' (leading '!' = a dislike). Prefer SPECIFIC tags. text: the sentence this came from. Stored as free context (no token cost) so a bare tag isn't ambiguous later. source: 'stated' (the user said it) or 'inferred' (you guessed it). Inferred never silently overrides stated; conflicts return a 'questions' list to ask the user. glosses: optional {tag: one-line meaning}. Emit these as a byproduct of your reply (a few tokens, no separate call). Missing ones fall back to a deterministic namespace template (0 tokens). Returns stored attrs, plus 'questions'/'superseded' when curation is on.
Record a photo/image asset with tags and optional description. Returns a dry-run report by default; set confirm=true to commit. Requires consent and media support.
Tools 'graph' and 'health' inferred from compiled JS assets, not visible in Python source. Tool definitions cannot be verified; schemas and descriptions may be incomplete or missing.
No error classification or recovery guidance. Error responses do not tell LLMs whether to retry, ask the user, or abort.