# Gnosem (remote · gnosem.dev)

Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.

- Trust score: 57/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `gnosem.dev`: 57/100 (this document), [markdown](https://verifymcp.io/servers/dev-gnosem-gnosem/gnosem.md), [page](https://verifymcp.io/servers/dev-gnosem-gnosem/gnosem)

## Channel facts

- Endpoint: `https://gnosem.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## 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-08-03.

- **Endpoint Security**: 51/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - 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**: 60/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1177 tokens (~196/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http dev-gnosem-gnosem https://gnosem.dev/mcp
```

### Codex

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

### opencode

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

### OpenClaw

```bash
openclaw mcp add dev-gnosem-gnosem --url https://gnosem.dev/mcp --transport streamable-http
```

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "dev-gnosem-gnosem": {
      "type": "http",
      "url": "https://gnosem.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-08-03 (score 57, +1)

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

### 2026-08-01 (score 56, +1)

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

### 2026-07-31 (score 55, +37)

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

### 2026-07-30 (score 18)

First indexed and scored.

## MCP tools (6)

### `memory_write` (~330 tokens)

Save a fact, preference, decision, or note to the user's cross-model memory. Any MCP client can read this back later. Include written_by (e.g. 'claude-code', 'gpt-5', 'kimi-k2') for provenance and session_id to group related writes. Long content (>400 chars) is automatically compressed on write to a structured-facts form optimized for LLM reading — the raw text is preserved. Pass no_optimize:true to skip. Writes are deduped by default: (1) SHA-256 of trim(content) short-circuits byte-identical writes with { id, exact_duplicate:true } for free (no embed call); (2) failing that, semantic dedup returns { id, deduped:true, matched_score } when cosine ≥ 0.85. Pass force:true to bypass both, or use memory_supersede to explicitly correct a prior memory.

Input parameters:

- `content` (string, required): The fact or note to remember. Plain text, max 8000 characters.
- `force` (boolean): Bypass semantic dedup and write anyway. Default false.
- `no_optimize` (boolean): Skip AI compression of long content. Default false.
- `session_id` (string): Opaque identifier grouping related writes from the same conversation.
- `tags` (array): Optional short labels for filtering (e.g. ['preference','stack']).
- `written_by` (string): Identifier of the model / client writing this (e.g. 'claude-code', 'gpt-5', 'kimi-k2', 'manual').

### `memory_search` (~311 tokens)

Search the user's memories. Default mode is 'hybrid': blends semantic (cosine over Vectorize) and keyword (BM25 over SQLite FTS5) hits via Reciprocal Rank Fusion (k=60). Semantic catches paraphrases; keyword catches exact-string hits (IDs, dates, code snippets). Pass mode:'semantic' or mode:'keyword' to run just one. Content defaults to the LLM-optimized (compressed) form when available (raw:true to invert). Excludes forgotten + superseded. Optional filters narrow after retrieval: tags (AND), written_by, session_id, and/or since/until (ms epoch).

Input parameters:

- `k` (integer): Max results (1–50). Default 10.
- `mode` (string): Retrieval mode. Default 'hybrid'.
- `query` (string, required): Search query. Interpreted as natural language for semantic mode and as FTS5-safe text for keyword mode.
- `raw` (boolean): Return original prose instead of the compressed form. Default false.
- `session_id` (string): Only return memories with an exact session_id match.
- `since` (integer): Only return memories created at or after this ms-epoch timestamp.
- `tags` (array): Only return memories containing ALL of these tags (AND semantics).
- `until` (integer): Only return memories created strictly before this ms-epoch timestamp.
- `written_by` (string): Only return memories with an exact written_by match (e.g. 'claude-code').

### `memory_list` (~222 tokens)

List the user's most recent memories in reverse chronological order. Use for browsing or catching up on what the user's other model sessions have written recently. Same content/content_raw shape as memory_search. Optional filters (tags, written_by, session_id, since, until) narrow the listing at the SQL level.

Input parameters:

- `cursor` (integer): Pagination cursor from a previous call's `cursor` field (ms epoch); returns rows older than this timestamp.
- `limit` (integer): Max rows to return (1–200). Default 50.
- `raw` (boolean): Return original prose instead of the compressed form. Default false.
- `session_id` (string): Only return memories with an exact session_id match.
- `since` (integer): Only return memories created at or after this ms-epoch timestamp.
- `tags` (array): Only return memories containing ALL of these tags (AND semantics).
- `until` (integer): Only return memories created strictly before this ms-epoch timestamp.
- `written_by` (string): Only return memories with an exact written_by match.

### `memory_forget` (~47 tokens)

Soft-delete a memory by id. The row is retained for audit but excluded from search/list and removed from the vector index.

Input parameters:

- `id` (string, required): UUID of the memory to forget.

### `memory_supersede` (~106 tokens)

Replace a stale memory with a corrected one. The old row is marked superseded and excluded from future reads; the new row becomes the current version. Use for corrections; use memory_forget for pure deletions.

Input parameters:

- `new_content` (string, required): New content that supersedes the old memory.
- `old_id` (string, required): UUID of the memory to replace.
- `session_id` (string)
- `tags` (array)
- `written_by` (string)

### `memory_write_bulk` (~161 tokens)

Write up to 50 memories in a single call. Each entry runs the same path as memory_write (semantic dedup by default; pass force:true per-entry to skip). Embeddings + optimizations run in parallel; D1 inserts are batched. Returns { results: [...] } with one entry per input in the same order — each is { id, created_at, optimized? } on success, { id, created_at, deduped, matched_score } on dedup, or { error } on failure. Free-tier limits apply to the sum: if adding N would exceed 200, the first (200 - existing) succeed and the rest return an error.

Input parameters:

- `memories` (array, required): Array of memory-write entries (1–50).

## Diagnostics

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

## Score history

- 2026-08-03: 57
- 2026-08-02: 56
- 2026-08-01: 56
- 2026-07-31: 55
- 2026-07-30: 18

## Links

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