Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.teflon07/memkeeper

OCI · GHCR.IO/TEFLON07/MEMKEEPER:0.5.3 · SCANNED SEP 20

Local-first memory for AI agents: on-device hybrid retrieval over a single SQLite file.

0 this week 50 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency35
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3791 tokens (~236/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the io.github.teflon07/memkeeper MCP server?

io.github.teflon07/memkeeper runs locally as a container image, launched with docker run --rm -i ghcr.io/teflon07/memkeeper:0.5.3. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · ghcr.io/teflon07/memkeeper:0.5.3

# add to Claude Code
claude mcp add teflon07-memkeeper -- docker run --rm -i ghcr.io/teflon07/memkeeper:0.5.3
// .cursor/mcp.json
{
  "mcpServers": {
    "teflon07-memkeeper": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/teflon07/memkeeper:0.5.3"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "teflon07-memkeeper": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/teflon07/memkeeper:0.5.3"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add teflon07-memkeeper -- docker run --rm -i ghcr.io/teflon07/memkeeper:0.5.3
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "teflon07-memkeeper": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/teflon07/memkeeper:0.5.3"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  teflon07-memkeeper:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/teflon07/memkeeper:0.5.3"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "teflon07-memkeeper": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/teflon07/memkeeper:0.5.3"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "teflon07-memkeeper": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/teflon07/memkeeper:0.5.3"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 15 Sept 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → pass functional
  • 14 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 −3
    • Stability: pass → 0.80 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed oci/ghcr.io/teflon07/memkeeper:0.5.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 16 exposed · ~3,609 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
candidate_list ~98

List memories in the human-review queue, filtered by review status. Read-only. Use to see what has been proposed via `candidate_submit` and its disposition; approving or rejecting candidates is a human action in the CLI/dashboard.

NameTypeReqDescription
limitintegerMaximum candidates to return. Default 50.
spacestringRestrict to a single memory space (namespace).
statusstringWhich queue to list. Default pending.

No output schema declared.

No examples provided.

candidate_submit ~347

Queue a proposed memory for human review instead of writing it to recall directly. Mutating: adds an item to the review queue (it does not enter recall until a human approves it via CLI/dashboard). Use this for plausible-but-unverified inferences; use `remember` when the fact is confirmed and should be recallable immediately.

NameTypeReqDescription
claim_keystringStable key identifying the claim.
confidencenumberConfidence in the proposed memory, 0.0–1.0.
contentstringyesThe proposed memory text: one atomic, self-contained claim. Required.
dry_runbooleanIf true, validate without enqueuing. Default false.
entity_keystringStable key of the entity this memory is about.
kindstringMemory kind (fact, decision, preference, lesson, ...).
projectstringFree-form project key.
rationalestringWhy you are proposing this (evidence/reasoning) to help the human reviewer decide.
scopestringVisibility scope: global, workspace, project, session, or custom.
sensitivitystringnormal (default) or sensitive.
silostringRetention tier the candidate targets (e.g. short-term, durable).
source_typestringProvenance: assistant-inference (default) or explicit-user.
spacestringMemory space (namespace) the candidate targets.
summarystringOptional shorter summary of the content.
supersedesarrayMemory ids this candidate would replace if approved.
tagsarrayFree-form tags.

No output schema declared.

No examples provided.

dream_graph ~105

Preview the graph-maintenance pass in dry-run (proposal-only) mode: surfaces the entity and relationship extractions and merges the nightly `dream` job would make, without writing anything. Read-only; no side effects. Use to inspect what graph changes are pending before they are applied.

NameTypeReqDescription
max_memoriesintegerHow many recent memories to analyze for proposals. Default 1000.
spacestringRestrict the analysis to a single memory space (namespace).

No output schema declared.

No examples provided.

entity_search ~164

Search the entity graph by key, canonical name, alias, or type (substring match). Read-only. Returns entity records, not memories — use it to resolve an entity_key or canonical name from a partial term. For memory content use `search`; to traverse outward from a known entity use `graph_neighbors` or `graph_context`.

NameTypeReqDescription
entity_keystringFilter to an exact entity key.
entity_typestringFilter by entity type (e.g. person, project, concept).
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
limitintegerMaximum number of entities to return. Default 10.
querystringSubstring matched against entity key, canonical name, and aliases.

No output schema declared.

No examples provided.

entity_upsert ~255

Create or update one entity in the graph projection (register it, rename it, or add aliases). Mutating. The graph is a rebuildable projection over memories, which remain the source of truth — use this to curate entity identity, not to store facts (use `remember` for facts).

NameTypeReqDescription
aliasesarrayAlternate names/surface forms that should resolve to this entity.
canonical_namestringyesPrimary display name for the entity. Required.
confidencenumberConfidence in the entity, 0.0–1.0.
entity_keystringyesStable, unique key identifying the entity. Required.
entity_typestringType of entity (e.g. person, project, concept, tool).
include_sourcebooleanIf true, reveal provenance/source metadata in the response. Default false.
metadataobjectArbitrary key/value attributes to attach to the entity.
source_episode_idstringId of the source episode this entity was derived from, if any.
spacestringMemory space (namespace) the entity belongs to.
statusstringLifecycle status (e.g. active, tombstoned).

No output schema declared.

No examples provided.

forget ~250

Retire one specific memory by id. Mutating: tombstones the memory (a soft delete that preserves audit history), so it stops surfacing in recall; it is not a hard delete. Set mode='correct' when retiring a memory because it is WRONG (e.g. a surfaced/recalled fact the user contradicted), as opposed to routine cleanup: this records a distinct `correct` event with the memory's provenance, and if you pass corrected_by (the id of the memory holding the right answer) it also records a `contradicts` link. Use mode='correct' for factual corrections so the signal is captured explicitly rather than inferred later.

NameTypeReqDescription
corrected_bystringWith mode='correct', the id of the memory holding the right answer (records a contradicts link).
dry_runbooleanIf true, validate without retiring. Default false.
memory_idstringyesId of the memory to retire. Required.
modestringtombstone (default) for routine cleanup; correct when the memory was factually wrong (records a correction signal).
reasonstringWhy the memory is being retired (recorded in the audit trail).

No output schema declared.

No examples provided.

get ~111

Fetch one memory by its exact id (for example, an id returned by `search` or `memory_list`). Read-only. Use when you already have the id and want the full record; use `search` to find a memory by its content.

NameTypeReqDescription
include_historybooleanIf true, include the memory's version/change history. Default false.
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
memory_idstringyesThe memory's id. Required.

No output schema declared.

No examples provided.

graph_context ~185

Build a compact, prompt-ready context pack centered on an entity: the entity, its graph neighbors, and the most relevant linked memories, budgeted to a character limit. Read-only. Use when an agent needs ready-to-inject context about one specific entity; use `pack` for query-driven context, or `graph_neighbors` for raw graph edges.

NameTypeReqDescription
depthintegerNumber of relationship hops to include. Default 1.
entity_keystringyesEntity key the context pack is centered on. Required.
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
max_charsintegerCharacter budget for the assembled pack. Default 4000.
max_edgesintegerMaximum relationships to include. Default 50.
max_memoriesintegerMaximum linked memories to include. Default 10.

No output schema declared.

No examples provided.

graph_neighbors ~169

Traverse the entity graph outward from a starting entity, returning connected entities and the relationships between them up to a bounded depth. Read-only. Use to explore how an entity connects to others (raw graph structure); use `graph_context` if you want a prose, prompt-ready context pack instead of edges.

NameTypeReqDescription
depthintegerNumber of relationship hops to follow. Default 1.
entity_keystringyesEntity key to start the traversal from. Required.
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
include_tombstonedbooleanIf true, include tombstoned (soft-deleted) entities/edges. Default false.
max_edgesintegerMaximum relationships to return (bounds the traversal). Default 50.

No output schema declared.

No examples provided.

memory_list ~194

List recent memories in reverse-chronological order for review or cleanup, optionally filtered. Read-only. Use to browse or audit what is stored (including stale or superseded entries); use `search` or `pack` for relevance-ranked retrieval against a query.

NameTypeReqDescription
entity_keystringRestrict to memories linked to this entity key.
include_contentbooleanIf true, return each memory's full text instead of a snippet. Default false.
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
limitintegerMaximum number of memories to return. Default 20.
spacestringRestrict to a single memory space (namespace), or "*" for all spaces. Omit for the default space.
statusstringFilter by lifecycle status (e.g. active, superseded, tombstoned). Omit for active memories.

No output schema declared.

No examples provided.

pack ~216

Assemble a compact, prompt-ready context block from one or more queries: retrieves, reranks, and budgets the top memories into injectable text. Read-only. This is the retrieval path for putting memory into an agent's prompt; use `search` instead when you want individual scored records rather than an assembled block.

NameTypeReqDescription
max_charsintegerCharacter budget for the assembled pack. Default 6000.
max_memoriesintegerMaximum memories to include in the pack. Default 10.
min_scorenumberReturn an empty pack when the top final score is below this threshold. Default 0.
queriesarrayyesOne or more natural-language queries to retrieve and merge into the pack. Required.
spacestringRestrict retrieval to a single memory space (namespace), or "*" for all spaces. Omit for the default space.
tagsarrayRestrict retrieval to memories carrying these tags.
titlestringHeading for the assembled pack. Default "context".

No output schema declared.

No examples provided.

relationship_upsert ~368

Create or update one directed relationship in the graph: subject --relation_type--> object. Mutating. Identify each endpoint by entity_key (preferred) or internal entity_id. The graph is a rebuildable projection over memories — curate structure here, store facts with `remember`.

NameTypeReqDescription
confidencenumberConfidence in the relationship, 0.0–1.0.
include_sourcebooleanIf true, reveal provenance/source metadata in the response. Default false.
memory_idstringId of the memory this relationship was derived from, if any.
metadataobjectArbitrary key/value attributes to attach to the relationship.
object_entity_idstringInternal id of the object endpoint (alternative to object_entity_key).
object_entity_keystringEntity key of the object (target) endpoint. Preferred over object_entity_id.
observed_atstringRFC 3339 timestamp of when this was observed.
relation_typestringyesThe relationship type/predicate (e.g. depends_on, works_with, part_of). Required.
source_episode_idstringId of the source episode this relationship was derived from, if any.
spacestringMemory space (namespace) the relationship belongs to.
statusstringLifecycle status (e.g. active, tombstoned).
subject_entity_idstringInternal id of the subject endpoint (alternative to subject_entity_key).
subject_entity_keystringEntity key of the subject (source) endpoint. Preferred over subject_entity_id.
valid_fromstringRFC 3339 timestamp the relationship starts being valid.
valid_tostringRFC 3339 timestamp the relationship stops being valid.

No output schema declared.

No examples provided.

remember ~633

Write one durable memory the agent should be able to recall later. Mutating: persists one atomic, self-contained fact, decision, preference, or lesson. When the fact names entities or states a typed relationship, include graph entities, aliases, and relationships in the same call; the memory and graph projection commit atomically and that one memory is the relationship evidence. Do not store secrets or raw transcripts. For a plausible-but-unverified inference, use `candidate_submit`.

NameTypeReqDescription
claim_keystringStable key identifying the claim, used to group versions for supersession.
confidencenumberConfidence in the memory, 0.0–1.0. Default 1.0.
contentstringyesThe memory text: one atomic, self-contained claim with enough context to stand on its own. Required.
contradictsarrayMemory ids this memory conflicts with.
derive_keysbooleanAuto-derive entity_key/claim_key from the content when not provided. Default true.
dry_runbooleanIf true, validate and return what would be written without persisting. Default false.
entity_keystringStable key of the entity this memory is about (groups related memories in the graph).
expires_atstringRFC 3339 timestamp after which the memory is dropped from recall.
graphobjectMachine-extracted graph projection supported by this same memory.
kindstringMemory kind (fact, decision, preference, lesson, action, ...). Inferred from the content prefix when omitted.
modestringHow to resolve against existing memories sharing the same entity/claim key. Default auto.
observed_atstringRFC 3339 timestamp of when this was observed. Defaults to now.
pinnedbooleanIf true, exempt from automatic eviction. Default false.
projectstringFree-form project key this memory belongs to.
scopestringVisibility scope: global, workspace, project, session, or custom.
sensitivitystringMark sensitive to flag the memory for stricter handling. Default normal.
silostringRetention tier (e.g. short-term, durable). Omit to use the space default.
source_typestringProvenance: assistant-inference (default) when the agent inferred it, or explicit-user when the user stated it directly.
spacestringMemory space (namespace) to write into. Omit for the default space.
summarystringOptional shorter summary of the content.
supersedesarrayMemory ids this memory replaces (they become superseded).
tagsarrayFree-form tags for filtering and retrieval boosts.
valid_fromstringRFC 3339 timestamp the fact starts being true.
valid_tostringRFC 3339 timestamp the fact stops being true (past values are excluded from recall).
verified_againststringWhat this memory was checked against, if any.

No output schema declared.

No examples provided.

search ~277

Find individual memories ranked by relevance to a query. Semantic-primary when embedding models are loaded, falling back to deterministic BM25/FTS keyword search otherwise; cross-encoder reranked by default. Read-only. Returns scored, individual memory records (with ids) — use this to locate or inspect specific memories. To assemble a prompt-ready context block, use `pack` instead; to browse recent memories without a query, use `memory_list`.

NameTypeReqDescription
entity_keystringRestrict to memories linked to this entity key.
include_contentbooleanIf true, return each memory's full text instead of a snippet. Default false.
include_sourcebooleanIf true, reveal provenance/source metadata. Default false.
limitintegerMaximum number of memories to return. Default 10.
querystringyesNatural-language search query. Required.
rerankbooleanApply the cross-encoder reranker to the candidate pool. Default true.
semantic_enabledbooleanForce semantic retrieval on or off. Default: on when embedding models are available, else lexical.
spacestringRestrict to a single memory space (namespace), or "*" for all spaces. Omit to search the default space.
tagsarrayRestrict to memories carrying these tags.

No output schema declared.

No examples provided.

stats ~122

Report store statistics: total/active memory counts, breakdowns by space, silo, status, and kind, schema version, and database size. Read-only; no side effects. Use to inspect the store's overall state and health, not to retrieve memories (use `search` or `pack` for that).

NameTypeReqDescription
include_healthbooleanIf true, add the governance/health rollup (counts of stale, expiring, and low-confidence memories). Default false.
include_indexesbooleanIf true, add per-index row counts. Default false.

No output schema declared.

No examples provided.

verify ~115

Re-confirm that an existing memory is still accurate as of now, stamping its last-verified time. Mutating: updates verification metadata only — it does NOT change the memory's content or promote it to a durable tier. If the value has CHANGED, do not verify; write a new memory with `remember` and supersede the old one instead.

NameTypeReqDescription
memory_idstringyesId of the memory being re-confirmed. Required.
verified_againststringThe source or ground truth the memory was checked against.

No output schema declared.

No examples provided.

Common questions

What is the io.github.teflon07/memkeeper MCP server?

io.github.teflon07/memkeeper is an MCP server listed in the public MCP registry as io.github.teflon07/memkeeper. Local-first memory for AI agents: on-device hybrid retrieval over a single SQLite file. This page covers its container image (ghcr.io/teflon07/memkeeper:0.5.3).

Is the io.github.teflon07/memkeeper MCP server safe to use?

io.github.teflon07/memkeeper scores 50 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.teflon07/memkeeper MCP server expose?

io.github.teflon07/memkeeper exposes 16 tools: stats, search, get, memory_list, entity_search, and 11 more. Their descriptions and schemas cost roughly 3,609 tokens of context every time the server is loaded.

Is the io.github.teflon07/memkeeper MCP server still maintained?

io.github.teflon07/memkeeper is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.