# SmartMemory (pypi · smartmemory-mcp)

Graph + vector memory for agents: recall, ingest, search, distill. Local or remote backend.

- Trust score: 57/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-27

## Components

- pypi · `smartmemory-mcp`: 57/100 (this document), [markdown](https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp.md), [page](https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp)

## Channel facts

- Registry: `pypi`
- Package: `smartmemory-mcp`
- Version: `1.4.94`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-27.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it.
  - 1 of 23 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1901 tokens (~111/item across 17 items; 17 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 70/100
  - Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 76/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 16% of tool parameters carry a description.
  - Structured output schemas are declared (82% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 17 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the SmartMemory MCP server?

SmartMemory runs locally as a PyPI package, launched with uvx smartmemory-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add ai-smartmemory-smartmemory-mcp -- uvx smartmemory-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "ai-smartmemory-smartmemory-mcp": {
      "command": "uvx",
      "args": [
        "smartmemory-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-smartmemory-smartmemory-mcp": {
      "command": "uvx",
      "args": [
        "smartmemory-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add ai-smartmemory-smartmemory-mcp -- uvx smartmemory-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-smartmemory-smartmemory-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "smartmemory-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-smartmemory-smartmemory-mcp --command uvx --arg smartmemory-mcp
```

### Hermes

```yaml
mcp_servers:
  ai-smartmemory-smartmemory-mcp:
    command: "uvx"
    args: ["smartmemory-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "ai-smartmemory-smartmemory-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "smartmemory-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-smartmemory-smartmemory-mcp -t stdio -c uvx -a smartmemory-mcp
```

### Other

```json
{
  "mcpServers": {
    "ai-smartmemory-smartmemory-mcp": {
      "command": "uvx",
      "args": [
        "smartmemory-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-27 (score 57, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-26 (score 72, +1)

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

### 2026-09-25 (score 71, +15)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-23 (score 56, −14)

- [security regression] Malware scan: pass → unverified

### 2026-09-22 (score 70, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-21 (score 55, +1)

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

### 2026-09-19 (score 54, +1)

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

### 2026-09-17 (score 53, +1)

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

## MCP tools (17)

### `login` (~31 tokens)

Login

Authenticate with a SmartMemory API key. Restart MCP server to unlock PRO tools.

Input parameters:

- `api_key` (string, required)

Output parameters:

- `result` (string)

### `whoami` (~22 tokens)

Whoami

Show current session: user, team, tier, and backend mode.

Output parameters:

- `result` (string)

### `switch_team` (~23 tokens)

Switch Team

Switch to a different workspace/team.

Input parameters:

- `team_id` (string, required)

Output parameters:

- `result` (string)

### `memory_ingest` (~36 tokens)

Ingest a memory

Ingest content through the full NLP pipeline with entity extraction.

Input parameters:

- `content` (string, required)
- `memory_type` (string)

Output parameters:

- `result` (string)

### `memory_search` (~475 tokens)

Search memories

Search memories using semantic similarity with optional hybrid mode.

hop_strategy: consensus follows entities several top results agree on; relevance
follows best-result entities and one-off bridges; semantic asks an LLM.
since/until: ISO-8601 or relative (7d, 24h, 30m), echoed as an absolute window.

as_of_date (ISO-8601) travels transaction time: what the system
believed at that instant. include_superseded keeps replaced items
visible in results (PLAT-AUDITABLE-MEMORY-1). include_retracted keeps
WITHDRAWN beliefs visible (CORE-RETRACTED-RECALL-1) — a separate
lifecycle state with no replacement, not covered by include_superseded.
include_archived keeps ARCHIVED items visible (CORE-ARCHIVED-RECALL-1) —
memories the decay/prune evolvers retired, or the source an
episodic-to-semantic promotion replaced; a third lifecycle state, again
with no replacement and no version chain. All three default to false, so
by default you will not be shown a memory the system already knows was
replaced, withdrawn, or retired.

Results from an as_of_date search carry as_of_resolution. A value of
"unresolved" means that result is PRESENT-DAY content the system could
not resolve to the requested time, so it must not be cited as what was
believed then. Set as_of_strict to refuse a partial history outright
rather than receive labelled results (gap #2).

Input parameters:

- `as_of_date`
- `as_of_strict` (boolean)
- `budget_ms` (integer)
- `catalog_mode` (boolean)
- `channel_weights`
- `cite` (boolean)
- `decompose` (boolean)
- `enable_hybrid` (boolean)
- `hop_strategy`
- `include_archived` (boolean)
- `include_retracted` (boolean)
- `include_superseded` (boolean)
- `max_hops` (integer)
- `memory_type`
- `multi_hop` (boolean)
- `query` (string, required)
- `since`
- `top_k` (integer)
- `until`

### `memory_recall` (~113 tokens)

Recall memories

\**Deprecated:** Use ``get_working_context``.

Legacy surface kept for backward compatibility.  Internally
delegates to the surfacing helper (CORE-MEMORY-DYNAMICS-1 M1a) and
post-filters cross-type results through ``_LEGACY_RECALL_TYPE_SCOPE``
to preserve the pre-shim ``memory_type="working"`` scope.

Input parameters:

- `cite` (boolean)
- `query` (string, required)
- `session_id`
- `top_k` (integer)

### `get_working_context` (~117 tokens)

Get Working Context

Retrieve a structured surfacing response (CORE-MEMORY-DYNAMICS-1 M1a).

Returns JSON matching
\``smart-memory-docs/docs/features/CORE-MEMORY-DYNAMICS-1/context-api-contract.json``.
Cross-type retrieval, ``strategy_used="fast:recency"``.  Standalone
MCP does not currently compose anchors.

Input parameters:

- `k` (integer)
- `max_tokens`
- `query` (string, required)
- `session_id` (string, required)
- `strategy`

### `read_around` (~219 tokens)

Read surrounding conversation

Auto-centered conversation read (CORE-RECALL-CENTERED-1 Phase 2).

Given a matched conversation-chunk ``item_id`` (from a recall hit's
\``conversation_handle``), return a char-budgeted ASYMMETRIC window of the
surrounding conversation chunks (~``before_ratio`` back / ``after_ratio``
forward; leftover spills to the other side) plus a continue-cursor — so a
caller pulls just the relevant slice of a long conversation into context
instead of the whole transcript. "Centered" is over neighbour 15-turn
chunks, not individual turns.

Returns ``{window_items, window_text, handle, continue_cursor:{prev_pos,
next_pos}, chars_used, char_budget}``. Pass a returned ``continue_cursor``
back as ``cursor`` to page further in one direction without overlap.

Input parameters:

- `after_ratio` (number)
- `before_ratio` (number)
- `char_budget` (integer)
- `cursor`
- `item_id` (string, required)

### `memory_get` (~28 tokens)

Get a memory

Retrieve a memory item by ID with full content and metadata.

Input parameters:

- `item_id` (string, required)

Output parameters:

- `result` (string)

### `memory_explain` (~119 tokens)

Explain a memory

Explain a memory's full provenance: origin, every belief the system
held for it over time, what replaced it, what it derives from, and
whether its history is cryptographically intact.

The single-call audit answer (PLAT-AUDITABLE-MEMORY-1). FREE tier by
design: agents should always be able to answer "how do you know
that?". chain_verified null means nothing to verify (legacy or
unversioned) — it is NOT a tamper warning.

Input parameters:

- `memory_id` (string, required)

### `memory_recall_pack` (~230 tokens)

Build a recall pack

Assemble the most useful context that fits in a token budget.

Returns one priority-ordered block (active plan, anchors, latest snapshot,
tier-1 user content, tier-2 graduated content, notes) packed to fit
\``budget_tokens``, plus a manifest accounting every token spent and every item
truncated or dropped (CORE-RECALL-BUDGET-1).

\``query`` ranks each section by relevance; omit it to rank by recency.
\``sections`` overrides the default list/order/caps as ``{name, cap_tokens}``
entries. ``preset`` selects a named section set instead: pass ``"wakeup"`` with a
small budget (~300 tokens) at session start for an L1 orientation card (active
plan, anchors, workspace topics, last-session headline) — the default sections go
degenerate at that size. Use ``get_working_context`` for the L2 drill-in.
Returns ``{block, manifest}``.

Input parameters:

- `budget_tokens` (integer, required)
- `preset`
- `query`
- `sections`

### `memory_policy_bundle` (~73 tokens)

Get policy bundle

Compile active workspace decisions into a Stratum policy bundle.

\``workflow`` is echoed in the selector for the runner. ``domain`` narrows
the source decisions. The returned JSON is the policy-exchange contract
bundle and is identical for local and hosted backends.

Input parameters:

- `domain`
- `workflow`

### `memory_feedback` (~129 tokens)

Give search feedback

Report which search results you used from a previous memory_search call.

Call this after using results from memory_search to help SmartMemory learn
which memories are actually useful. Pass the search_session_id from the
memory_search response and the item_ids you incorporated into your response.

Input parameters:

- `result_used` (array, required): List of item_ids from the search results that you used. Pass an empty list if none of the results were useful.
- `search_session_id` (string, required): The session ID returned at the bottom of the memory_search output (e.g. "search:ws123:abc456def789").

Output parameters:

- `result` (string)

### `memory_export` (~29 tokens)

Memory Export

Export all memories as an OKF bundle directory or tar.gz archive.

Input parameters:

- `path` (string, required)

Output parameters:

- `result` (string)

### `memory_import` (~28 tokens)

Memory Import

Losslessly import an OKF bundle through the direct add path.

Input parameters:

- `path` (string, required)

Output parameters:

- `result` (string)

### `memory_migrate` (~31 tokens)

Memory Migrate

Migrate all memories to a different backend via a temporary OKF bundle.

Input parameters:

- `target` (string, required)

Output parameters:

- `result` (string)

### `memory_auto` (~198 tokens)

Memory Auto

Enable or disable automatic memory lifecycle.

When enabled, SmartMemory automatically recalls context at session start,
observes tool calls, distills conversation turns, learns from errors, and
persists session summaries. Zero manual tool calls needed.

Session-scoped overrides — settings apply to the current session only,
not persisted to config.toml.

Input parameters:

- `distill_turns` (boolean): Save (prompt, response) pairs.
- `enabled` (boolean): Activate (True) or deactivate (False) automatic lifecycle.
- `learn_from_errors` (boolean): Capture PostToolUseFailure errors.
- `observe_tool_calls` (boolean): Capture PostToolUse observations.
- `orient_budget` (integer): Max tokens for session-start context injection.
- `recall_budget` (integer): Max tokens for per-prompt context injection.
- `recall_strategy` (string): "session_only" | "topic_change" | "every_prompt".
- `session_id` (string)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp#diagnostics

## Score history

- 2026-09-27: 57
- 2026-09-26: 72
- 2026-09-25: 71
- 2026-09-24: 56
- 2026-09-23: 56
- 2026-09-22: 70
- 2026-09-21: 55
- 2026-09-20: 54
- 2026-09-19: 54
- 2026-09-18: 53
- 2026-09-17: 53
- 2026-09-16: 52
- 2026-09-15: 52
- 2026-09-14: 51
- 2026-09-13: 48
- 2026-09-12: 48
- 2026-09-11: 48
- 2026-09-10: 48
- 2026-09-09: 48
- 2026-09-08: 48
- 2026-09-07: 48
- 2026-09-06: 48

## Common questions

### What is the SmartMemory MCP server?

SmartMemory is an MCP server listed in the public MCP registry as ai.smartmemory/smartmemory-mcp. Graph + vector memory for agents: recall, ingest, search, distill. Local or remote backend. This page covers its PyPI package (smartmemory-mcp).

### Is the SmartMemory MCP server safe to use?

SmartMemory scores 57 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 27 September 2026. 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 SmartMemory MCP server expose?

SmartMemory exposes 17 tools: login, whoami, switch_team, memory_ingest, memory_search, and 12 more. Their descriptions and schemas cost roughly 1,901 tokens of context every time the server is loaded.

### Is the SmartMemory MCP server still maintained?

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

### What licence is the SmartMemory MCP server under?

SmartMemory declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/smartmemory-mcp/
- Socket report: https://socket.dev/pypi/package/smartmemory-mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-smartmemory-smartmemory-mcp/smartmemory-mcp
