# WhiteMagic — governed local memory for agent continuity (remote · mcp.whitemagic.dev)

Local-first memory and continuity for AI coding agents. No cloud backend; optional hosted lane.

- Trust score: 72/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-25

## Components

- remote · `mcp.whitemagic.dev`: 72/100 (this document), [markdown](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp.md), [page](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp)
- npm · `whitemagic-mcp`: 40/100, [markdown](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/whitemagic-mcp.md), [page](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/whitemagic-mcp)
- oci · `docker.io/lbailey94/whitemagic:9`: 41/100, [markdown](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/docker-io-lbailey94-whitemagic-9.md), [page](https://verifymcp.io/servers/lbailey94-whitemagic-mcp/docker-io-lbailey94-whitemagic-9)

## Channel facts

- Endpoint: `https://mcp.whitemagic.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `9.2.8`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-25.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 84/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3848 tokens (~71/item across 54 items; 23 tools + 31 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 3 days we've observed: 3 tool removals, 0 breaking changes, 1 auth/transport breaks, 17 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% 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 23 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### How do I install the WhiteMagic — governed local memory for agent continuity MCP server?

WhiteMagic — governed local memory for agent continuity is a hosted endpoint at https://mcp.whitemagic.dev/mcp, so there is nothing to install locally. 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 --transport http lbailey94-whitemagic-mcp 'https://mcp.whitemagic.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "lbailey94-whitemagic-mcp": {
      "url": "https://mcp.whitemagic.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "lbailey94-whitemagic-mcp": {
      "type": "http",
      "url": "https://mcp.whitemagic.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.lbailey94-whitemagic-mcp]
url = "https://mcp.whitemagic.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lbailey94-whitemagic-mcp": {
      "type": "remote",
      "url": "https://mcp.whitemagic.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add lbailey94-whitemagic-mcp --url 'https://mcp.whitemagic.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  lbailey94-whitemagic-mcp:
    url: "https://mcp.whitemagic.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "lbailey94-whitemagic-mcp": {
      "Transport": "http",
      "Url": "https://mcp.whitemagic.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add lbailey94-whitemagic-mcp -t streamable-http -u 'https://mcp.whitemagic.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "lbailey94-whitemagic-mcp": {
      "type": "http",
      "url": "https://mcp.whitemagic.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-24 (score 72, 0)

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

### 2026-09-23 (score 72, −4)

- [security regression] Stability: unverified → fail
- [security improvement] Authorization: fail → partial
- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 68 → 77
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 9.2.6 → 9.2.7
- [functional] Server version: 9.2.5 → 9.2.6
- [functional] Server version: 9.2.4 → 9.2.5
- [functional] New tool “memory.ingest”
- [functional] New tool “session.checkpoint”
- [functional] New tool “receipts.verify”
- [functional] New tool “receipts.emit”
- [functional] New tool “memory.update”
- [functional] New tool “memory.revisions”

### 2026-09-22 (score 76)

First indexed and scored.

## MCP tools (23)

### `wm` (~209 tokens)

WhiteMagic memory and continuity meta-tool

WhiteMagic meta-tool — memory and continuity kernel over the curated tool surface (69 tools): persistent memory, session continuity and recall, governance/audit, and local tool execution. Mode: READ-ONLY — writes (session.*, memory.create/update) are refused; recall only. Scope: store /srv/whitemagic/hosted-store/lmdb. Invoke with thought=<natural language> (auto-routed), route=<exact tool id> (e.g. 'memory.search', 'session.continuity'), or args=<object> (passthrough). Provide exactly one of thought or route. Say 'list tools' to enumerate the curated surface.

Input parameters:

- `args` (object): Arguments to pass through to the target tool.
- `route` (string): Explicit tool name for direct dispatch (e.g. 'memory.create', 'tools.list').
- `thought` (string): Natural language input describing what to do. Auto-routes to the best-matching tool via TF-IDF NLU classification.

Output parameters:

- `_wm_route` (object): Dispatch metadata: resolved tool, routing confidence, matched input.

### `memory.search` (~249 tokens)

Search memories

Search and recall memories across galaxies using hybrid semantic, BM25, and associative retrieval.

Input parameters:

- `cold_scan_limit` (integer): Maximum cold records to scan when include_cold is set (default 2048)
- `galaxy` (string): Galaxy filter (optional; default: search all memory galaxies, results labeled; "all" is accepted as an alias for the unfiltered default)
- `include_cold` (boolean): Opt-in unranked cold recovery (no thaw). Trust/importance floors apply; BM25 floors do not apply to unscored recovery. Search content is scrubbed navigation capped at 8192 characters; read by id/gala…
- `limit` (integer): Maximum results (default 10; must be >= 1)
- `min_importance` (number): Minimum memory importance (0-1)
- `min_score` (number): Absolute BM25 score floor
- `min_score_ratio` (number): Relative floor: reject hits below this fraction of the top score
- `min_trust` (number): Minimum source_trust (0-1): drop results below this trust floor
- `query` (string, required): Full-text query

Output parameters:

- `count` (integer): Number of results returned
- `evidence_bundle` (object): Per-result provenance (coverage, history, integrity, retrieval, source_time, visibility) plus conflicts.
- `galaxy` (string): Galaxy scope the query ran against
- `hint` (string): Optional recovery hint when results are thin
- `recall_mode` (string): Retrieval path used (hybrid, episodic, fts, importance, none)
- `results` (array): Ranked memories (id, content, score, galaxy, source)
- `status` (string): Operation status

### `memory.read` (~43 tokens)

Read memory

Retrieve a specific memory by its ID or coordinate address.

Input parameters:

- `galaxy` (string): Galaxy containing the memory (default codex)
- `id` (string, required): Memory UUID

Output parameters:

- `content` (string): Full memory content
- `created_at` (string): RFC 3339 creation timestamp
- `galaxy` (string): Galaxy containing the memory
- `id` (string): Memory UUID
- `status` (string): Operation status
- `tags` (array): Memory tags

### `memory.list` (~87 tokens)

List memories

List memories with filters (galaxy, tags, limit, offset) for inventory and discovery.

Input parameters:

- `exclude_tags` (array): Drop memories carrying any of these tags
- `galaxy` (string): Galaxy to list (default codex)
- `limit` (integer): Maximum entries (default 20)
- `offset` (integer): Skip this many matching entries before returning (default 0)

Output parameters:

- `galaxy` (string): Galaxy scope listed
- `matched` (integer): Total records matching the filter
- `memories` (array): Records (id, content_preview, created_at, tags)
- `offset` (integer): Pagination offset applied
- `returned` (integer): Records in this page
- `status` (string): Operation status
- `total` (integer): Total records in scope

### `memory.hybrid_recall` (~254 tokens)

Hybrid recall

Fused recall across full-text, vector, graph, and coordinate lookup with recall_mode disclosure.

Input parameters:

- `cold_scan_limit` (integer): Maximum cold records to scan when include_cold is set (default 2048)
- `galaxy` (string): Galaxy filter (optional; default: search all memory galaxies, results labeled; "all" is accepted as an alias for the unfiltered default)
- `include_cold` (boolean): Opt-in unranked cold recovery (no thaw). Trust/importance floors apply; BM25 floors do not apply to unscored recovery. Search content is scrubbed navigation capped at 8192 characters; read by id/gala…
- `limit` (integer): Maximum results (default 10; must be >= 1)
- `min_importance` (number): Minimum memory importance (0-1)
- `min_score` (number): Absolute BM25 score floor
- `min_score_ratio` (number): Relative floor: reject hits below this fraction of the top score
- `min_trust` (number): Minimum source_trust (0-1): drop results below this trust floor
- `query` (string, required): Full-text query

Output parameters:

- `count` (integer): Number of results returned
- `evidence_bundle` (object): Per-result provenance (coverage, history, integrity, retrieval, source_time, visibility) plus conflicts.
- `galaxy` (string): Galaxy scope the query ran against
- `hint` (string): Optional recovery hint when results are thin
- `recall_mode` (string): Retrieval path used (hybrid, episodic, fts, importance, none)
- `results` (array): Ranked memories with per-result source labels
- `status` (string): Operation status

### `session.continuity` (~150 tokens)

Recall session continuity

Recall where the previous session left off: recent turns, checkpoints, and open work.

Input parameters:

- `current_session_id` (string): Session to exclude (optional)
- `max_content_bytes` (integer): Per-turn content cap in bytes (256-262144, default 8192)
- `max_response_bytes` (integer): Turns budget in bytes (256-262144, default 49152)
- `n` (integer): Number of prior turns (default 10)
- `since` (string): Time-range floor: epoch seconds, RFC 3339, or YYYY-MM-DD
- `until` (string): Time-range ceiling: epoch seconds, RFC 3339, or YYYY-MM-DD

Output parameters:

- `checkpoint` (object|null): Latest checkpoint handoff, or null
- `checkpoint_id` (string|null): Memory UUID of the checkpoint, or null
- `count` (integer): Turns returned
- `max_content_bytes` (integer): Per-turn byte cap applied
- `max_response_bytes` (integer): Total response byte budget applied
- `previous_session` (string): Session the turns were read from
- `status` (string): Operation status
- `truncated` (boolean): Whether the response hit its byte budget
- `turns` (array): Turns (memory_id, role, turn_type, sequence, content, content_bytes, content_truncated, importance)
- `turns_omitted` (integer): Turns dropped by the response budget

### `memory.revisions` (~72 tokens)

Memory revision chain

List or verify a memory's content revision chain (tamper evidence): every content update is chained and head-checked.

Input parameters:

- `action` (string): Action: list (default) | verify
- `galaxy` (string): Galaxy (default: codex)
- `id` (string, required): Memory UUID to inspect

Output parameters:

- `action` (string): Action performed (list, restore, ...)
- `count` (integer): Number of revisions returned
- `galaxy` (string): Galaxy containing the memory
- `id` (string): Memory UUID
- `revisions` (array): Revision records with content hashes and timestamps
- `status` (string): Operation status

### `receipts.verify` (~96 tokens)

Verify a continuity receipt

Verify a stored receipt id or a bundle offline; fail-closed without an anchor (verdict PROVISIONAL).

Input parameters:

- `bundle` (object): Inline bundle to verify (alternative to id)
- `id` (string): Stored receipt task id (UUID or urn:uuid:)
- `require_anchor` (boolean): Fail-closed: without an anchor the verdict is PROVISIONAL
- `variant` (string): Stored variant (default original)

Output parameters:

- `id` (string): Receipt UUID that was verified
- `require_anchor` (boolean): Whether an external anchor was required
- `result` (object): Verdict detail: errors, insufficient/provisional reasons, and a summary (attestations, issuers, receipts, settled, terminated, types).

### `memory.count` (~35 tokens)

Count memories

Count memories matching optional filters without returning content.

Input parameters:

- `galaxy` (string): Galaxy to count (optional; all memory galaxies when absent)

### `memory.stats` (~37 tokens)

Memory statistics

Memory-store statistics: totals, galaxy spread, and index health.

Input parameters:

- `galaxy` (string): Galaxy to summarize (optional; default codex)

### `memory.tags` (~34 tokens)

List memory tags

List the tag vocabulary with usage counts.

Input parameters:

- `galaxy` (string): Galaxy whose tags to list (optional; default codex)

### `memory.aggregate` (~71 tokens)

Aggregate memories

Aggregate a numeric or categorical field over matched memories.

Input parameters:

- `limit` (integer): Maximum candidates considered (default 50; must be >= 1)
- `metric` (string, required): Aggregate metric: count | session_count | session_span
- `query` (string, required): Full-text query selecting the memories to aggregate over

### `memory.associations` (~53 tokens)

Memory associations

Associative neighbours of a memory (spreading activation over the association graph).

Input parameters:

- `direction` (string): Direction: from | to | both (default: both)
- `id` (string, required): Memory UUID to inspect

### `memory.batch_read` (~43 tokens)

Batch read memories

Read several memories by id in one call.

Input parameters:

- `galaxy` (string): Galaxy (default: codex)
- `ids` (array, required): Memory UUIDs to read

### `memory.query` (~184 tokens)

Query memories

Structured query over memories with filters and ordering.

Input parameters:

- `created_after` (string): Filter: only memories created at or after this RFC 3339 timestamp (e.g. 2026-08-01T00:00:00Z)
- `created_before` (string): Filter: only memories created at or before this RFC 3339 timestamp
- `galaxy` (string): Galaxy to query (default codex)
- `limit` (integer): Maximum entries (default 50)
- `max_importance` (number): Filter: maximum importance (0-1)
- `min_importance` (number): Filter: minimum importance (0-1)
- `query` (string): Case-insensitive substring filter over content (literal match). For tokenized, ranked full-text retrieval use memory.search
- `tags` (array): Filter: memories with all of these tags

### `memory.filter` (~218 tokens)

Filter memories

Filter memories by metadata (tags, importance, recency).

Input parameters:

- `created_after` (string): Filter: only memories created at or after this RFC 3339 timestamp (e.g. 2026-08-01T00:00:00Z)
- `created_before` (string): Filter: only memories created at or before this RFC 3339 timestamp
- `exclude_tags` (array): Filter: drop memories carrying any of these tags
- `galaxy` (string): Galaxy to filter (default codex)
- `limit` (integer): Maximum entries (default 50)
- `max_importance` (number): Filter: maximum importance (0-1)
- `min_importance` (number): Filter: minimum importance (0-1)
- `offset` (integer): Skip this many matching entries before returning (default 0)
- `query` (string): Filter: every whitespace-separated term must appear (case-insensitive) in the content or title
- `tags` (array): Filter: memories with all of these tags

### `memory.nearby` (~75 tokens)

Nearby memories

Memories near a coordinate address (5D spatial neighbourhood).

Input parameters:

- `galaxy` (string): Galaxy (default: codex)
- `limit` (integer): Maximum results (default 10)
- `query` (string, required): Query text to locate in 5D space
- `radius` (number): Spatial radius cutoff (optional)

### `memory.vector.search` (~73 tokens)

Vector search memories

Vector-similarity search over memory embeddings.

Input parameters:

- `embedding` (array): Raw embedding vector (alternative to memory_id)
- `galaxy` (string): Galaxy filter (optional)
- `limit` (integer): Maximum results (default 10)
- `memory_id` (string, required): Memory UUID whose stored embedding is the query

### `session.list` (~61 tokens)

List sessions

List sessions with titles and summaries.

Input parameters:

- `sequence` (integer): Filter by start sequence number
- `session_id` (string): Filter by session UUID
- `title` (string): Filter by title substring
- `type` (string): Filter by session type

### `session.recall` (~52 tokens)

Recall a session

Recall a session's turns without continuity packaging.

Input parameters:

- `limit` (integer): Maximum turns to return (default 50)
- `session_id` (string): Session UUID to recall (defaults to the most recent session)

### `session.replay` (~245 tokens)

Replay a session

Replay a session's recorded turns in order.

Input parameters:

- `cursor` (string): Lossless mode opaque placement cursor
- `include_superseded` (boolean): Also return turns replaced via supersedes (default false).
- `max_wire_bytes` (integer): Lossless mode serialized JSON ceiling (1024-49152)
- `min_importance` (number): Selective mode floor (default 0.7)
- `mode` (string): full | selective | progressive | lossless (default full)
- `n` (integer): Maximum turns (default 50)
- `page_size` (integer): Lossless mode records per page (1-64, default 16)
- `session_id` (string): Target session (required explicit UUID for lossless; otherwise default most recent)
- `since` (string): Time-range floor: epoch seconds, RFC 3339, or YYYY-MM-DD
- `token_budget` (integer): Progressive mode token budget (default 2000)
- `turn_types` (array): Selective mode: turn types to keep
- `until` (string): Time-range ceiling: epoch seconds, RFC 3339, or YYYY-MM-DD

### `gnosis.status` (~22 tokens)

Knowledge status

Knowledge-surface status: galaxies, counts, and index health.

### `gnosis.explain` (~111 tokens)

Explain provenance

Explain why a memory or route was selected (provenance readout).

Input parameters:

- `args_hash` (string): Hash of the arguments under evaluation
- `has_purpose` (boolean): Claim: the invocation carries a purpose
- `is_network` (boolean): Claim: the invocation uses the network
- `is_spawn` (boolean): Claim: the invocation spawns a process
- `is_write` (boolean): Claim: the invocation writes
- `tool_name` (string): Tool name to explain

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp#diagnostics

## Score history

- 2026-09-25: 72
- 2026-09-24: 72
- 2026-09-23: 72
- 2026-09-22: 76

## Common questions

### What is the WhiteMagic — governed local memory for agent continuity MCP server?

WhiteMagic — governed local memory for agent continuity is an MCP server listed in the public MCP registry as io.github.lbailey94/whitemagic-mcp. Local-first memory and continuity for AI coding agents. No cloud backend; optional hosted lane. This page covers its hosted endpoint (https://mcp.whitemagic.dev/mcp).

### Is the WhiteMagic — governed local memory for agent continuity MCP server safe to use?

WhiteMagic — governed local memory for agent continuity scores 72 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 WhiteMagic — governed local memory for agent continuity MCP server expose?

WhiteMagic — governed local memory for agent continuity exposes 23 tools: wm, memory.search, memory.read, memory.list, memory.hybrid_recall, and 18 more. Their descriptions and schemas cost roughly 2,474 tokens of context every time the server is loaded.

### Does the WhiteMagic — governed local memory for agent continuity MCP server require authentication?

No. We connected to WhiteMagic — governed local memory for agent continuity without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the WhiteMagic — governed local memory for agent continuity MCP server still maintained?

WhiteMagic — governed local memory for agent continuity is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.whitemagic.dev/mcp
- Repository: https://github.com/lbailey94/whitemagic
- Website: https://www.whitemagic.dev/
- Changelog RSS feed: https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp.json
- HTML version of this page: https://verifymcp.io/servers/lbailey94-whitemagic-mcp/mcp
