Linksee Memory
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKSEE_TELEMETRY | No | Opt-in telemetry setting: 'basic' to enable, 'off' to disable (default) | off |
| LINKSEE_MEMORY_DIR | No | Override the default database directory location | ~/.linksee-memory |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rememberA | Persist knowledge across sessions and AI tools (Claude, GPT, Cursor, Codex, Gemini). The only cross-agent memory that survives session boundaries. WHEN TO CALL: • The moment an error or failure occurs → layer: "caveat" (auto-protected, never forgotten) • When a decision is made or approved → content + anchor: {} (remembered AND enforced in one call) • When a goal is set or updated → layer: "goal" • When something new is learned → layer: "learning" • When the user says "remember this" / "覚えておいて" • After completing a task or receiving user approval MODES: • Create (default): content is the only required field. entity defaults to the project you are in; layer defaults to "context" (or "learning" when anchor is set). • Create + enforce: add anchor: {} — the memory also becomes a decision the guard re-injects before Edit/Write/Bash and on session start. Give anchor.violation_signal (forbidden strings) to make contradictions detectable; anchor.affects (path globs) to scope it. • Update: memory_id (+ optional content, layer, importance) • Delete: memory_id + forget: true Importance ≥ 0.9 pins the memory (protected from auto-forgetting). Supports Japanese (日本語) and English. |
| recallA | Your persistent memory across all AI tools. CALL THIS BEFORE STARTING ANY TASK to check for past caveats (pain records), decisions, and learnings — prevents repeating mistakes across sessions. Typical usage: recall({ query: "keywords" }) for search, recall({ path: "file.ts" }) for file history, recall() for overview. WHEN TO CALL: • Before starting any new task or touching a file • When the user mentions "before" / "前に" / "last time" / "remember when" • When an error occurs — check if you've seen it before • When making a decision — check for prior decisions on the same topic THREE MODES (auto-detected): • Search (default): provide query → returns memories ranked by relevance + heat • File history: provide path → returns complete edit history with user-intent context • Session brief: omit all params → what needs attention (🔴/🟡), where you are on the Map, open loops (proposals / distill queue / friction), top entities. CALL THIS FIRST in a new session. • Locate: where: "" → your position on the Current Truth Map + blast radius (what else moves if you touch this). where: true → auto-locate from recent edits • Dream: dream: true → North Star + orphaned proposals to triage + distill_queue + friction (the full triage session; the brief carries only the counts) • Entity list: overview: true (the old no-arg behaviour) Works across Claude, GPT, Cursor, Codex, Gemini — one local SQLite file, nothing leaves your machine. |
| read_smartA | Token-saving file reader with AST-aware diff caching. Use INSTEAD of the standard Read tool for ALL file reads — even first reads gain chunk metadata for future savings. • First read: full content + chunk metadata (enables future savings) • Re-read unchanged: ~50 tokens (99% savings) • Re-read modified: only changed chunks (50-90% savings) Especially effective for files >200 lines. Always prefer this over Read. |
| drift_statusA | Check what's drifting right now — the "Intent Datadog" for your product decisions. Returns a structured truth map showing which decisions/constraints/hypotheses are: 🔴 drift (unaccounted divergence from intent) 🟡 review (soft signal, awaiting human decision) ⚪ held (acknowledged, time-boxed, not forgotten) 🔵 aligned (reality matches intent) Nodes are classified into 4 species: • hypothesis → Decision Cards (decision journal format) • constraint → Rules (pass/fail checklist) • commitment → Heartbeats (cadence monitoring) • source_of_truth → Reference (stable anchors) WHEN TO CALL: • At session start — "what needs my attention?" • Before making a decision — check for existing anchors on the topic • After completing work — verify drift state changed • When the user asks about product health / what's broken / what's stale |
| declare_anchorA | Declare a new decision, constraint, or prohibition as a truth-map anchor. Anchors are NORMATIVE claims: "we decided X", "Y is forbidden", "Z must always hold." The drift detector later checks these against committed reality. declare-don't-mine: anchors come ONLY from explicit human declaration, never from pattern extraction. WHEN TO CALL: • When the user makes a product decision ("let's go with approach A") • When a constraint is established ("never do X") • When a commitment is made ("we ship weekly") • When the user says "anchor this" / "record this decision" |
| resolve_driftA | Record a resolution for a drifting anchor — the human feedback loop. 6 actions: • fix — "we fixed the code/reality to match intent" → state becomes aligned • supersede — "intent evolved, this is the new direction" → state becomes aligned • acknowledge — "we know, parking it for now" → state becomes held (with optional review date) • dismiss — "false positive, not actually drifting" → edges dismissed AND the gate stops firing on it (hit_term: just that word; gate:false: close the edges but keep the gate watching) • harden — "re-injected but still violated, enforce it" → card_policy.gate_mode=hard (PreToolUse will BLOCK) • soften — "back off to a warning" → gate_mode=soft WHEN TO CALL: • After drift_status shows 🔴 drift or 🟡 review items • When the user says "that's fixed" / "ignore that" / "we changed direction" • When acknowledging a known gap with a review date |
| share_draftA | Make a LINK to a reviewed draft of a field note for other agents (KanseiLINK note page). ONLY when the user says they want to share — never call it on your own. Use after a SaaS / MCP / API connection got stuck and was fixed (or was not). You write the fields; this tool only checks them and builds the URL. Linksee sends nothing: the user opens the link, reviews the filled form, and only their click on that page sends it. No values, only kinds: write "401 invalid_token", not the token. A field that looks like a key, token, JWT, e-mail, tenant URL (acme.slack.com), IP, local path (C:, /Users/, /home/) or a long hex/base64 run stops the build and returns which field. The whole URL must fit in 2,000 characters (a Japanese character takes 9) — if not, it asks you to shorten; it does not cut. Returns { url, notice } — show the user both. Linksee records only that a draft was made (no field text). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| summarize-session | Turn a chat session transcript into structured memories. Produces up to 6 memories (one per layer) capturing goal/context/emotion/implementation/caveat/learning. Use at session end. |
| extract-caveats | Scan a body of text (post-mortem, error log, decision doc) and propose caveat-layer memories — concise pain lessons starting with verbs ("Never", "Always", "Watch out"). Returns JSON list of caveats. |
| weekly-consolidation | Sleep-mode summary of the past week's memories for an entity. Produces a single learning-layer entry that captures the trajectory. Use as input to the consolidate tool, or to write a Friday digest. |
| recall-and-write | Anti-pattern guard. Before writing code, draft a doc, or making a decision: recall relevant memories first, then produce the answer with explicit citations to the recalled memory_ids. Forces "memory before action" discipline. |
| entity-handoff | Produce a handoff document for an entity: name, kind, key memories per layer, current open questions, and next steps. Use when transferring context to a new session, a new agent, or a new collaborator. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Memory store statistics | Summary counts: entities, memories, layer breakdown, heat distribution. |
| Hot memories | Memories currently in the "hot" heat band — what the agent is actively working with. |
| Recently accessed memories | Memories accessed in the last 7 days, ordered by recency. |
| All caveats | Every caveat-layer memory — the protected "never forget" pile of pain lessons. |
TDQS
Scored across 7 tools
remember vs declare_anchor both create decision anchors (remember docs even say 'add anchor: {}'), and recall's no-arg brief / dream modes overlap heavily with drift_status's 'what needs attention at session start'. The boundaries exist but require careful reading of long descriptions to resolve, and read_smart is a file reader dropped into a memory server, which muddies the set's identity.
Naming mixes bare verbs (remember, recall) with verb_noun compounds (declare_anchor, resolve_drift, share_draft) and a noun_verb style (drift_status), plus read_smart. All names are readable and mostly snake_case, but there is no single predictable pattern for an agent to infer new tool names from.
Seven tools is a well-scoped count for a memory + drift system, and each broadly maps to a distinct phase (write, read, observe, remediate, share). read_smart and share_draft feel like adjacent add-ons rather than core, but the set is not bloated.
Memory lifecycle is covered via remember (create/update/delete) and recall (search, file history, brief), and drift has status/declare/resolve. Minor gaps remain: no way to delete or edit an existing anchor outright, and no explicit list-all-memories listing beyond recall's modes.