Persistent Memory for AI Agents. Sandbox-first runtime, central SQLite brain, federated search, Dream Mode, Web Knowledge Base, Obsidian export.
Gnosys provides 31 tools with consistent naming (verb_noun pattern: gnosys_add, gnosys_recall, gnosys_delete) and reasonable descriptions (avg ~100 chars). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented in the visible code, parameter descriptions are often terse (10-30 chars), and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Composition is strong, tools chain well (recall→reinforce, add→update→delete). Security concern: gnosys_ingest and gnosys_export accept file paths as parameters, risking path traversal if not validated server-side.
Add a new memory to the vault with optional project scope, tags, and confidence metadata.
Archive a memory to remove it from active recall without permanent deletion.
Ask a question and get an answer synthesized from relevant memories using an LLM.
Retrieve the audit log of memory modifications, additions, and reinforcements.
Find all memories that reference or link to a given memory.
Generate a context-aware briefing of relevant memories for the current task or project.
Permanently delete a memory from the vault.
Output schemas not documented. Tools return results but LLMs cannot plan downstream calls without knowing response structure (e.g., does gnosys_recall return memory_id, content, confidence, or all three?).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications (WRITE, DESTRUCTIVE, REVERSIBLE). LLMs cannot infer safety properties without explicit hints.
Parameter descriptions are terse (10-30 chars). Rubric baseline is 72 chars avg. Examples: 'Memory ID to reinforce' (22 chars), 'Search query' (12 chars). Expand with context: when to use, expected format, constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Check Dream Mode status: whether idle-triggered memory consolidation is enabled and active.
Export memories to Obsidian vault format, Markdown files, or JSON.
Retrieve a single memory by ID with full metadata.
Perform hybrid search combining full-text and semantic similarity using embeddings.
Ingest external documents (PDF, DOCX, CSV, Markdown) and convert them to memories.
Apply a lens filter to memories (by category, tag, confidence, date range, etc.).
List memories by category, project, or all active memories with pagination.
Find all memories referenced by a given memory.
Generate a portfolio summary of all projects, their memories, and key insights.
Delete a preference by key.
Retrieve a preference value by key.
List all preferences or search by key pattern.
Set a preference key-value pair with optional metadata (title, tags, confidence).
Get or set project identity metadata (name, description, tags, owner).
Search memories using federated search (hybrid + semantic) with optional project filtering.
Boost a memory's confidence score and reinforcement count to mark it as useful.
Generate or retrieve agent rules (CLAUDE.md, .cursor, .codex) for a project.
Full-text search across all memories with optional filters and ranking.
Get vault statistics: memory counts by category, total projects, and system health.
Group memories by time period (day, week, month, year) and compute statistics.
View or change the active MCP toolset tier (core, standard, full) to manage context usage.
Restore an archived memory back to active status.
Update an existing memory's content, title, category, or metadata.
Analyze memory relationships and generate a link graph showing connections between memories.
gnosys_ingest and gnosys_export accept file_path and output_path as parameters. No visible validation against path traversal (e.g., '../../../etc/passwd'). Sanitize paths server-side or reject absolute paths.
No error handling guidance. Tools lack recovery hints (e.g., 'Memory not found. Try gnosys_search() to locate it.'). LLMs cannot self-correct on failures.