Reference stub server implementing the Exocortex memory bus contract (v1.0.0). Provides memory recall, storage, timeline, context, provenance, beliefs, and commitment tracking with per-client allowlisting and server-assigned trust levels. Transport: stdio, newline-delimited JSON-RPC 2.0.
Server has 9 tools with explicit schemas and descriptions loaded from schema/tools.json. Naming follows verb_noun pattern (memory.remember, memory.recall, etc.). Descriptions are present and substantive (100-300 chars), explaining WHAT each tool does and WHEN to use it. However, parameter descriptions are sparse, many lack detail on constraints, formats, or valid ranges. Input schemas are visible in the code but lack formal type declarations and enums for constrained fields (e.g., source_kind, granularity, min_trust should be enums). Error handling is present but generic (tool_error returns code+message without recovery guidance). Output schemas are documented in code comments but not formally in the tool definitions. Security is strong (server-assigned trust, per-client allowlist, canary detection), but composition could be tighter, some tools (memory.commitments, memory.correct) are stubs returning unavailability errors rather than being omitted.
Retrieve beliefs about a subject as of a given timestamp. Optionally includes superseded beliefs. Returns empty list if belief ledger tables are not present.
Retrieve open commitments and obligations. Returns empty list with unavailability note because the Ledger daemon is not yet built.
Retrieve contextual memory items for a given focus query, respecting token budget. Returns a brief summary, items, and metadata. Open-world clients receive verified-only trust projection.
Correct or amend a memory. Currently returns needs_approval error because the local approval UI is not yet built.
Delete a memory. Requires a confirm_token issued by the local approval UI. Returns the number of tombstoned records.
Retrieve full provenance metadata for a memory by ID, including source, trust, timestamp, and audit trail.
Retrieve memories matching a query with semantic search. Supports filtering by trust level, time range, and kinds. Returns items with provenance, respects per-client rolling token budget and k-max limits. Open-world clients (with web/shell access) receive narrowed trust projections.
Constrained parameters lack enum declarations. source_kind, granularity, min_trust, and trust levels are free-form strings in schemas but should be enums to prevent hallucinated values.
Stub tools (memory.commitments, memory.correct) return unavailability errors instead of being omitted. This wastes agent reasoning cycles and violates single-responsibility principle.
Parameter descriptions lack format/constraint details. E.g., 'since' and 'until' accept ISO timestamps but description does not specify format. 'k' accepts integers but lacks min/max bounds (code shows 1-50 cap, not documented).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Store a memory with server-assigned trust level based on source_kind channel. Returns a memory ID and status (pending_approval or stored). Trust is assigned by the server from the source_kind enum; any client-supplied trust is ignored.
Retrieve a timeline of memory buckets aggregated by granularity (day, week, month, year). Supports time range and minimum trust filtering.
Error responses are generic (code + message) and lack recovery guidance. E.g., 'budget_exceeded' does not suggest next steps (wait, reduce k, or call different tool).
Output schemas are documented in code comments but not formally declared in tool definitions. LLMs cannot parse comments, they need structured schema declarations.