OmniMem (richarvey/OmniMem) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 48 tools. No publisher has claimed this listing.

C
Warning
74/100

OmniMem

Self-hosted semantic memory for AI Agents. Persistent sessions, experience scoring, and a graveyard for dead ends, backed by knowledge acquired from the RSS you read and stored in a Valkey vector search then exposed as an MCP server.

Warning. Serious findings were identified. Review the full report before connecting. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

richarvey

Source: github_repo_search

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Code appears obfuscated
1 file are unreadable to a human reviewer. Cannot audit what they do.
🔐
You'll be asked for 5 credentials: MCP_AUTH_TOKEN, OAUTH_ADMIN_PASSWORD, WEB_UI_AUTH_TOKEN, ANTHROPIC_API_KEY, VALKEY_PASSWORD
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes48 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

health

Server health: Valkey connection, index counts, model status, uptime.

version

Return the current OmniMem version.

remember

Store a memory with automatic dedup. Returns duplicate info if near-match exists; use force=True to override.

remember_document

Index a long-form document by splitting it into chunks and storing each chunk as a memory.

recall

Search memories by semantic similarity. Returns ranked results; abandoned-approach warnings appear first.

recall_index

Lightweight recall: returns ranked summaries without full content. Use recall_detail() to fetch full content for selected keys.

recall_detail

Fetch full content for specific memory keys. Use after recall_index() to expand only the entries you need.

deprioritise

Reduce a memory's visibility without deleting. Accepts a key or natural language query.

archive

Archive a memory — excluded from recall but still stored.

reinstate

Reinstate a deprioritised/archived memory to active state.

retag

Replace or adjust the tags on a memory without re-embedding it.

forget

Permanently delete a memory. Requires confirm=True; returns preview otherwise.

suppress_topic

Suppress a topic — matching memories filtered from recall.

unsuppress_topic

Remove a topic from the suppression list.

list_suppressions

List all suppressed topics.

find_duplicates

Scan a namespace for clusters of near-identical memories.

set_project_context

Create or update a project's context (description, stack, goals, state).

get_project_context

Retrieve full context for a project by name.

list_projects

List all stored project contexts, deduplicated by project name.

update_project_state

Update a project's current state and notes without re-embedding.

compile_project_context

Gather all stored memories for a project and compile them into a structured context draft. Use this before set_project_context() to auto-produce or refresh a project's context from its episodic memories, experience data, and abandoned approaches.

compile_project_domains

Suggest work-type domains for a project from its stack and its own memories, with the evidence behind each one. Returns a draft by default; pass auto_save=True to store it.

delete_project

Bulk delete every memory belonging to a project. Requires confirm=True; returns a preview otherwise.

deprioritise_project

Bulk deprioritise every active memory in a project (0.2x recall visibility, reversible). Requires confirm=True; returns a preview otherwise.

reinstate_project

Bulk reinstate every deprioritised or archived memory in a project back to active. Requires confirm=True; returns a preview otherwise. The inverse of deprioritise_project().

memory_audit

Summary of all memories grouped by state. Useful for cleanup.

why_did_you_mention

Explain why a topic surfaced by searching recall logs.

explain_memory

Return full metadata for a memory key.

reindex

Drop and recreate Valkey search indexes to clear orphaned vector entries.

record_experience

Record effort, outcome, dead ends, and breakthroughs for a memory. High-effort successes surface more; high-effort failures (>=4, abandoned) auto-suppress the approach names.

log_abandoned

Append a dead-end approach to a memory's abandoned list.

get_experience

Return experience data for a memory key.

experience_summary

Aggregate experience stats: effort, outcomes, graveyard of abandoned approaches, breakthroughs.

warn_if_abandoned

Check if an approach was previously abandoned. Call before suggesting libraries or tools.

check_contradictions

Scan for contradictions. Tier 1 (default): fast heuristic. Tier 2 (use_api=True): Claude API verification.

compile_skill

Compile domain procedure from experience and graveyard memories into a loadable SKILL.md. 'propose' (default) returns a reviewable diff; 'write' commits only a previously proposed and accepted diff — there is no silent-commit path.

find_skills

Discover compiled skills: ranked skill IDs and descriptions for a query or domain. Load the winner intact with get_skill().

get_skill

Load a skill whole: the complete SKILL.md body with frontmatter and structure intact, by ID, name, or domain.

bless

Promote a single strong lesson to skill-eligible now, bypassing the reinforcement threshold at the next compile_skill().

briefing

Session-start briefing: project context, experience summary, stale memories, knowledge, contradictions, reinstate candidates.

recent_knowledge

Recent knowledge articles ingested by the RSS worker.

promote_knowledge

Mark a knowledge item as permanently useful, and optionally skill-eligible for a domain.

set_licence

Record the redistribution rights of one or more memories.

set_provenance

Record where one or more memories came from.

queue_status

Check the enrichment queue. Returns the number of pending jobs waiting for background fact extraction.

dump_to_file

Export all memories to a JSON backup file.

restore_from_file

Restore memories from backup. Default dry_run=True previews without writing. Merges with existing data.

list_backups

List available backup files, newest first.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
🔐 secretMCP_AUTH_TOKEN
configOAUTH_ENABLED
configOAUTH_ADMIN_USER
🔐 secretOAUTH_ADMIN_PASSWORD
configOAUTH_BASE_URL
configINDEX_DRIFT_CHECK
configMCP_PORT
configMCP_HOST
configMCP_TRANSPORT
configMCP_ALLOWED_HOSTS
configMCP_ALLOWED_ORIGINS
🔐 secretWEB_UI_AUTH_TOKEN
configBACKUP_DIR
configSTALE_MEMORY_DAYS
configAUTO_MAINTENANCE_INTERVAL
configINGEST_MODE
configENRICHMENT_BATCH_MODE
configSKILL_MIN_SCORE
configSKILL_SUGGEST_MIN_SIMILARITY
configSKILL_KNOWLEDGE_WATCH_DAYS
configSKILL_KNOWLEDGE_WATCH_THRESHOLD
configCONTRADICTION_SIMILARITY_THRESHOLD
🔐 secretANTHROPIC_API_KEY
configDEDUP_SIMILARITY_THRESHOLD
configEMBEDDING_BACKEND
configEMBEDDING_MODEL
configFACT_EXTRACTION_MODEL
configDEPRIORITISED_WEIGHT
configEMBEDDING_ONNX_FILE
configEMBEDDING_MODEL_REVISION
configPROJECT_DOMAIN_CACHE_TTL_SECONDS
configRECALL_EXPAND_COUNT
configQUERY_EXPANSION_MODEL
configMEMORY_RECALL_TOP_K
configRECALL_EXPAND_QUERIES
configRECENCY_DECAY_DAYS
configABANDONED_CACHE_TTL_SECONDS
configSKILL_PROPOSAL_TTL_SECONDS
configSKILL_EXPORT_DIR
configSKILL_SCAN_INTERVAL_HOURS
configSKILL_SCAN_MAX_PROPOSALS
configSKILL_SCAN_MIN_POOL
configSKILL_SCAN_CROSS_PROJECT
configOMNIMEM_USER
configSKILL_FEED_MAX_ARTICLES
configSKILL_CLUSTER_THRESHOLD
configSKILL_DOMAIN_SUGGEST_THRESHOLD
configVALKEY_HOST
configVALKEY_PORT
🔐 secretVALKEY_PASSWORD
configVALKEY_MAX_CONNECTIONS
configVALKEY_RAW_MAX_CONNECTIONS
configOAUTH_REFRESH_MAX_DAYS
configOAUTH_LOGIN_MAX_ATTEMPTS
configOAUTH_LOGIN_WINDOW_SECONDS
configOAUTH_VALKEY_MAX_CONNECTIONS
configRSS_MAX_PAGE_BYTES
configRSS_REQUIRE_LICENCE
configRSS_MAX_ARTICLES_PER_FEED
configRSS_MAX_DIGEST_ENTRIES
configMAX_KNOWLEDGE_AGE_DAYS
configFEEDS_CONFIG_PATH
configFEEDS_WATCH_INTERVAL
configRSS_SCHEDULE_HOURS
configWEB_UI_LOGIN_ENABLED
configWEB_UI_SESSION_HOURS
configDASHBOARD_STATS_TTL
configMETRICS_CACHE_TTL
configTELEMETRY_COLD_DAYS
configOMNIMEM_INSTRUCTIONS_CHARS
configOMNIMEM_TOOL_SCHEMAS_CHARS
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

48/48 tools missing one or more hints — health (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); version (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); remember (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +45 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

No eval / new Function

2 eval() or new Function() calls — dynamic code execution

Replace eval / Function with explicit parsing or safer alternatives.

Readable source code

1 file are minified or bundled, which is usually build output rather than concealment

Ship unminified, readable source.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 4 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/richarvey/omnimem?variant=verified)](https://m8ven.ai/mcp/richarvey/omnimem)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 6aaee7e8f5ac4abcf50cfed3af012e9f7a903c29
code hash: 890a1be94b3f8b35769bf8a1c595e2cc853515b29e96b79914ce3f8bfc700d93
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client