{"name":"dev.gnosem/gnosem","slug":"gnosem","title":"Gnosem","description":"Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.","url":"https://mcp.market/server/gnosem","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-26T02:25:00.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:46:01.952Z","last_ok_at":"2026-11-04T04:46:01.952Z","latency_ms":121},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/gnosem/gnosem","website":"https://gnosem.dev","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://gnosem.dev/mcp"}],"packages":[],"tools":[{"name":"memory_forget","description":"Soft-delete a memory by id. The row is retained for audit but excluded from search/list and removed from the vector index.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"UUID of the memory to forget."}},"required":["id"]}},{"name":"memory_list","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Max rows to return (1–200). Default 50."},"cursor":{"type":"integer","description":"Pagination cursor from a previous call's `cursor` field (ms epoch); returns rows older than this timestamp."},"raw":{"type":"boolean","description":"Return original prose instead of the compressed form. Default false."},"tags":{"type":"array","items":{"type":"string"},"description":"Only return memories containing ALL of these tags (AND semantics)."},"written_by":{"type":"string","description":"Only return memories with an exact written_by match."},"session_id":{"type":"string","description":"Only return memories with an exact session_id match."},"since":{"type":"integer","description":"Only return memories created at or after this ms-epoch timestamp."},"until":{"type":"integer","description":"Only return memories created strictly before this ms-epoch timestamp."}}}},{"name":"memory_search","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Search query. Interpreted as natural language for semantic mode and as FTS5-safe text for keyword mode."},"k":{"type":"integer","description":"Max results (1–50). Default 10."},"mode":{"type":"string","enum":["semantic","keyword","hybrid"],"description":"Retrieval mode. Default 'hybrid'."},"raw":{"type":"boolean","description":"Return original prose instead of the compressed form. Default false."},"tags":{"type":"array","items":{"type":"string"},"description":"Only return memories containing ALL of these tags (AND semantics)."},"written_by":{"type":"string","description":"Only return memories with an exact written_by match (e.g. 'claude-code')."},"session_id":{"type":"string","description":"Only return memories with an exact session_id match."},"since":{"type":"integer","description":"Only return memories created at or after this ms-epoch timestamp."},"until":{"type":"integer","description":"Only return memories created strictly before this ms-epoch timestamp."}},"required":["query"]}},{"name":"memory_supersede","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"old_id":{"type":"string","description":"UUID of the memory to replace."},"new_content":{"type":"string","description":"New content that supersedes the old memory."},"tags":{"type":"array","items":{"type":"string"}},"written_by":{"type":"string"},"session_id":{"type":"string"}},"required":["old_id","new_content"]}},{"name":"memory_write","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"content":{"type":"string","description":"The fact or note to remember. Plain text, max 8000 characters."},"tags":{"type":"array","items":{"type":"string"},"description":"Optional short labels for filtering (e.g. ['preference','stack'])."},"written_by":{"type":"string","description":"Identifier of the model / client writing this (e.g. 'claude-code', 'gpt-5', 'kimi-k2', 'manual')."},"session_id":{"type":"string","description":"Opaque identifier grouping related writes from the same conversation."},"no_optimize":{"type":"boolean","description":"Skip AI compression of long content. Default false."},"force":{"type":"boolean","description":"Bypass semantic dedup and write anyway. Default false."}},"required":["content"]}},{"name":"memory_write_bulk","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"memories":{"type":"array","description":"Array of memory-write entries (1–50).","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"content":{"type":"string","description":"The fact or note to remember. Plain text, max 8000 characters."},"tags":{"type":"array","items":{"type":"string"}},"written_by":{"type":"string"},"session_id":{"type":"string"},"no_optimize":{"type":"boolean","description":"Skip AI compression of long content. Default false."},"force":{"type":"boolean","description":"Bypass semantic dedup for this entry. Default false."}},"required":["content"]}}},"required":["memories"]}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-24T17:24:45.760Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:24:45.654Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 346ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 30 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://gnosem.dev/mcp","reachable":true,"authRequired":false,"latencyMs":346,"serverInfo":{"name":"gnosem","version":"0.1.0"}}],"packages":[],"repo":{"found":true,"owner":"gnosem","repo":"gnosem","archived":false,"pushedAt":"2026-08-26T02:25:00Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/310809128?v=4","ownerCreatedAt":"2026-07-30T00:51:14Z","license":"MIT"},"icon":{"url":"https://gnosem.dev/favicon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-26T02:25:00.000Z","score":23}}}},"grade_history":[],"reviews":[]}