Evidence-based agent memory layer for Codex, Claude Code, and development teams. Provides MCP tools for memory search, creation, retirement, and correction, plus local agent sync capabilities.
MemForge defines 7 tools with partial schema coverage. All tools have descriptions (10-200 chars, within baseline), but input schemas are incomplete: most parameters lack explicit type definitions in visible code. The search tool references a custom 'RankedRetrievalIntent' type without definition. Parameters like 'time_range', 'source_filter', and 'entities' are documented as objects/arrays but lack internal field schemas. No output schemas are documented. Error handling is absent, no recovery guidance, categorization, or actionable error messages visible. Tool composition is reasonable (search, get, create, retire, propose, push variants), but parameter descriptions are generic ('List of memory types to filter by' lacks enum values or constraints). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) detected. Naming follows verb_noun convention (search, get_memory, create_memory, retire_memory, propose_memory_correction, push_*), clear and consistent.
Create a new memory with content, provenance, memory type, optional confidence score, client identifier, and repository identifier
Retrieve a specific memory by ID, including private memories
Propose a correction to an existing memory with replacement content, provenance, reason, expected content hash, and replacement kind
Push one GitHub repository file into a configured github_repo source with repo URL, ref, relative path, markdown body, and optional metadata
Push one file's raw text into a configured local repository source with vault ID, relative path, markdown body, and optional metadata
Retire a memory by ID with a reason and expected content hash for verification
Input schemas lack complete type definitions. Parameters like 'time_range', 'source_filter', 'entities' are documented as objects/arrays but internal field schemas are missing. 'RankedRetrievalIntent' is referenced but not defined.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains.
No error handling guidance. Tools lack recovery hints, error categorization (retryable vs user-fixable vs fatal), or actionable error messages. Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Search memories with optional query, intent, top_k limit, memory type filters, time range, entities, source filters, and inclusion flags for private/superseded memories
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot determine which tools are safe to retry or have irreversible side effects. 'retire_memory' and 'propose_memory_correction' should be marked destructive/reversible.
Parameter descriptions lack constraints and enums. 'memory_type' accepts 'fact, decision, convention, procedure' but this is stated in prose, not as an enum. 'confidence' lacks min/max bounds. LLMs cannot validate inputs without formal constraints.