A governed cognitive layer that transforms distributed observations into reusable understanding across models and interfaces. Exposes the memory layer to Cursor, Claude Desktop, Claude Code and other MCP clients via stdio.
Twin has 11 tools with complete input schemas and descriptions. Naming follows verb_noun convention (claim_search, session_start, etc.). Descriptions are substantive (100-250 chars), explaining WHAT and WHEN. However, parameter descriptions lack actionable constraints (no enums, ranges, or format specs). Output schemas are undocumented, LLMs cannot predict response structure. Error handling is absent from tool definitions. No tool annotations (readOnlyHint/destructiveHint). Domain/project filtering logic is sophisticated but not surfaced in parameter constraints. Missing: pagination guidance, idempotency markers, recovery hints.
Fetch one claim by id, including its evidence quotes and percepts.
Everything known about a project: claims linked to it plus the most recent decisions.
Most recent technical/work decisions, optionally scoped to a project.
Entities and claims connected to a given entity name in the knowledge graph (projects, people, systems, tools).
Hybrid search (text + semantic + graph) over store claims. `domain` is the domain of YOUR current task (work, technical, personal_preferences, assistant_preferences) and controls privacy filtering. Optional `type` filters by memory type (decision, task, preference, belief, fact, event, procedure, constraint).
The user's stable preferences (technical + communication), optionally ranked by relevance to `context`.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, nesting). Forces agents to guess what claim_search returns or how to chain results to session_observe.
Parameter constraints missing. 'domain' accepts free-form strings instead of enum [work, technical, personal_preferences, assistant_preferences]. 'type' in claim_search lacks enum. 'mode' in inject_context_pack (compact|explainable|references_only) not constrained. LLMs will hallucinate invalid values.
No error handling guidance. Tools lack recovery hints (e.g., 'If claim not found, try claim_search()'). No categorization of errors as retryable vs user-fixable. Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Privacy-filtered context pack with EpistemicState, Narratives, open Reflections, and derived confidence/independence.
Record feedback on a session or memory item.
Complete a cognitive session and consolidate learnings.
Observe current text in an active session and get memory suggestions.
Start a cognitive session with domain/task classification and context injection.
No tool annotations. session_start and session_complete are WRITE operations but lack destructiveHint. claim_* tools are READ-ONLY but lack readOnlyHint. Agents cannot distinguish safe from risky calls without reading descriptions.
Pagination absent. claim_search and claim_recent_decisions accept 'limit' but no offset/cursor or total_count in response. Large result sets will blow context windows. No guidance on max safe limits.