Auditable memory (memory3l)
PYPI · MEMORY3L-MCP
Audited memory over MCP: an append-only fact ledger plus verifiable invariants I1-I5.
Available components
Last scanned (7 hours ago)
Scores higher than 71% of PyPI servers
Category Memory and Knowledge
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 Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 2 of 33 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Build provenance not yet verified. View diagnostics → Unverified
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 45 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability80
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 934 tokens (~93/item across 10 items; 10 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
- Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
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.
- 5 Nov 26 +16
- Malware scan: unverified → pass ▲ security
- 3 Nov 26 −14
- Malware scan: pass → unverified ▼ security
- 2 Nov 26 −6
- Stability: pass → 0.60 functional
- 28 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 27 Oct 26 +1
- Stability: 0.97 → pass security
- 26 Oct 26 −16
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.97 functional
- 20 Oct 26 +1
- Stability: 0.97 → pass security
- 18 Oct 26 +16
- Malware scan: unverified → pass ▲ security
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 5 Nov 2026 · Analysed pypi/memory3l-mcp@0.2.0
Provenance Inconclusive
We could not complete the check, so nothing is claimed either way. This is a gap on our side, not a finding about the package.
| Result | Inconclusive |
|---|---|
| Ecosystem | pypi |
| Reason | Unsupported forge |
| Discovered via | Registry attestation endpoint |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 33 packages
| Packages resolved | 33 |
|---|---|
| No linked repository | 2 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
audit Audit one episode against I1-I5 ~154
Run the invariant checks over one episode and return the violations. This is the tool to call to answer 'did this memory lose anything?'. I1 = a fact in the ledger no longer reaches any summary (silent loss); I2 = a slot's newest value is not visible at the top level, so the model is never told it; I3 = a fact's evidence no longer resolves to stored dialogue; I4 = extraction completeness against the raw turns; I5 = an erasure is verifiable and its evidence is gone. `ok: true` with no violations means none of the checked failure modes is present -- report that as the result, not as a guarantee about meanings.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
audit_summary Audit every episode ~50
Aggregate the invariant checks over every episode that has a ledger, including the `silent_loss_rate`. Use this for an overall health answer; use `audit` when you already know the episode and want the detail.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
current Current value of every known slot ~75
Return the derived current-value registry for an episode: the newest value of each attribute, with the summary it came from. This is what the model should be told at the top level. If a value the conversation established is missing here, that is an I2 failure -- confirm it with `audit`.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
evidence Original dialogue behind a fact ~84
Return the raw user/agent turns a fact was extracted from, resolved through its evidence pointers. Use this to justify a stored value with the actual conversation rather than the summary's paraphrase. `resolved: false` means at least one evidence pointer no longer resolves -- an I3 provenance failure; that matters and should be reported, not hidden.
| Name | Type | Req | Description |
|---|---|---|---|
| fact_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
fact Why a fact left the working set ~106
Given a `fact_id`, report the fact's full record and where it now lives: `live` (still in an active summary), `archived` (moved to the permanent archive, reachable by id) or `MISSING` (in the ledger but unreachable, which is an I1 silent loss). Also returns `reason` and `superseded_by`. Use this when asked why a piece of information is no longer in context.
| Name | Type | Req | Description |
|---|---|---|---|
| fact_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
history Every value a slot ever held ~117
Return one slot's value over time, oldest first, bounded by `upto_turn` when given. Use this for 'what was it before?' and for any question about change; `current` only answers 'what is it now?'. A slot is a lower-case attribute name such as `工位` or `office` -- call `current` first if you do not know the exact spelling, since this matches the slot literally.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | – |
| slot | string | yes | – |
| upto_turn | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_episodes List audited episodes ~40
List the episode ids that have an audit ledger. Every other tool needs one of these ids, so call this when you do not already know the episode.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
store_info Which ledger is being served ~55
Report the database this server reads, whether it exists, its size, and how many episodes carry an audit ledger. Call this first when a query returns nothing: an empty or wrong path is the usual cause, not an absent feature.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
temporal Versioned projection and its anomalies ~74
Return the episode's temporal (bitemporal-style) projection: row count, whether it is consistent with the ledger, any anomalies, and the DDL for recreating the table. Use this when memory state is projected into an external store and you need to know whether the two still agree.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
tombstones What was erased, and what remains ~97
List the compliance tombstones for an episode: facts deliberately erased, with their evidence pointers, which of those are still readable, and how many residual prose mentions survive. This is the deletion-verification view (I5). A non-empty `residual_prose_mentions` or a readable evidence pointer means the content is not fully gone from the store -- report that plainly instead of calling the erasure complete.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
How do I install the Auditable memory (memory3l) MCP server?
Auditable memory (memory3l) runs locally as a PyPI package, launched with uvx memory3l-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · memory3l-mcp
claude mcp add jayzht-memory3l-mcp -- uvx memory3l-mcp
What is the Auditable memory (memory3l) MCP server?
Auditable memory (memory3l) is an MCP server listed in the public MCP registry as io.github.jayzht/memory3l-mcp. Audited memory over MCP: an append-only fact ledger plus verifiable invariants I1-I5. This page covers its PyPI package (memory3l-mcp).
Is the Auditable memory (memory3l) MCP server safe to use?
Auditable memory (memory3l) scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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 Auditable memory (memory3l) MCP server expose?
Auditable memory (memory3l) exposes 10 tools: store_info, list_episodes, audit, audit_summary, current, and 5 more. Their descriptions and schemas cost roughly 852 tokens of context every time the server is loaded.
Is the Auditable memory (memory3l) MCP server still maintained?
Auditable memory (memory3l) is still listed as active in the MCP registry. We last reached this channel on 5 November 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 Auditable memory (memory3l) MCP server under?
Auditable memory (memory3l) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.