Sovereign memory provider contract, router, and resource policy for Starlight Intelligence System. Exposes the vault (L1) + hybrid index (L2) to any coding agent over stdio.
starlight-memory defines 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (memory_recall, memory_remember, memory_forget). Descriptions are action-oriented and explain WHEN to use each tool. However, parameter descriptions are sparse or missing for optional fields (vault, memory_type, privacy_class, importance, tags in memory_remember lack guidance on defaults/constraints). Output schemas are not documented, callers cannot predict response structure. Error handling is minimal; no recovery guidance or actionable error messages visible in the code. The vault_list and memory_stats tools lack parameter descriptions entirely. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles (memory_forget is DESTRUCTIVE, memory_remember is WRITE).
Delete a memory atom by id.
Hybrid (lexical + semantic) recall over the memory vault. Use to retrieve prior context, decisions, facts, and notes before acting.
Persist a durable memory atom to the vault as filesystem-native markdown. Use when a fact, decision, or preference should survive across sessions and agents.
Fast lexical (BM25) search over the vault. Use for keyword/exact-term lookups.
Index + vault statistics (atom count, embeddings status).
List all memory atoms (id + summary + vault).
Read the full content of one memory atom by id.
memory_remember has 5 optional parameters (vault, memory_type, privacy_class, importance, tags) with no descriptions or default guidance. LLMs cannot determine which are required, what values are valid, or what happens if omitted.
No output schemas documented for any tool. Callers cannot predict response structure (e.g., does memory_recall return {results: [...]} or {memories: [...]}?). This forces LLMs to guess and wastes tokens on trial-and-error parsing.
memory_forget (DESTRUCTIVE) and memory_remember (WRITE) lack tool annotations (destructiveHint, idempotentHint). Agents cannot distinguish safe reads from irreversible writes without reading descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
vault_list and memory_stats have minimal descriptions (50 chars or less). vault_list description is 'List all memory atoms (id + summary + vault).', no guidance on when to call it or what it returns. memory_stats description is 'Index + vault statistics (atom count, embeddings status).', vague on output format.
No error handling or recovery guidance visible in CallToolRequestSchema handler. If memory_forget fails (e.g., memory_id not found), the code likely returns a raw error. LLMs need actionable guidance: 'Memory not found. Call vault_list() to see available IDs.'