{"name":"io.github.memtomem/memtomem","slug":"memtomem","title":null,"description":"Markdown-first long-term memory for AI agents. Hybrid BM25 + vector search, runs locally.","url":"https://mcp.market/server/memtomem","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"ai","tags":["ai","search"],"presence":{"score":29,"stars":14,"forks":32,"downloads_week":null,"last_push_at":"2026-09-20T07:42:32.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/memtomem/memtomem","website":"https://memtomem.com","version":"0.6.4","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"memtomem","version":"0.6.4","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"description":"Run the MCP stdio server. The distribution's console script is the CLI, so the server needs this subcommand.","value":"serve","type":"positional","valueHint":"subcommand"}]}],"tools":[{"name":"_contains_boolean","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"_registered_tool_names","description":"Enumerate registered tool names via MCPServer's public-ish surface.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_activity","description":"Show memory activity summary by day.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_add","description":"Add a new memory entry to a markdown file and immediately index it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_add_redaction_stats","description":"Return a JSON snapshot of redaction-guard outcomes since process start.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_agent_register","description":"Register an agent in the multi-agent memory system.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_agent_search","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_agent_share","description":"Copy a memory chunk's content into another namespace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ask","description":"Ask a question and get an answer grounded in your memories.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_auto_tag","description":"Extract and apply keyword-based tags to indexed memory chunks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_batch_add","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_candidate_evidence","description":"Show what stored memory already says about one pending candidate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_candidate_list","description":"List memory-formation review candidates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_candidate_propose","description":"Queue an explicit pending candidate; never write durable memory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_candidate_recover","description":"Return stale interrupted approval claims to the pending queue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_candidate_review","description":"Approve or reject a candidate; only approval writes durable memory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_cleanup_orphans","description":"Find and remove orphaned chunks whose source files no longer exist.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_config","description":"View or update memtomem configuration values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_conflict_check","description":"Check for potential contradictions with existing memories.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_consolidate","description":"Find groups of related chunks that could be consolidated into summaries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_consolidate_apply","description":"Apply a consolidation by creating a summary chunk for a group.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_artifact_migrate","description":"Migrate canonical context artifacts (agents / commands / skills).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_artifact_transfer","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_context_compose","description":"Compose Pinned Context first, then fill the remaining budget by retrieval.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_detect","description":"Detect agent configuration files in the current project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_diff","description":"Show sync status between context.md and agent files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_generate","description":"Generate agent configuration files from .memtomem/context.md.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_init","description":"Seed canonical context artifact directories.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_memory_migrate","description":"Move markdown memory file(s) between ADR-0011 memory scope tiers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_promote","description":"Move or drop a label pointer over an artifact's versions (ADR-0022).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_pull","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_sync","description":"Push .memtomem/context.md to all detected agent files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_context_version","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_decay_expire","description":"Delete chunks older than max_age_days from the index.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_decay_scan","description":"Preview chunks that would be expired by TTL (dry-run, no deletions).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_dedup_merge","description":"Merge duplicate chunks: keep keep_id, delete delete_ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_dedup_scan","description":"Scan for duplicate chunk candidates (dry-run, no mutations).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_delete","description":"Delete memory entries from the index (and optionally from the source file).","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_do","description":"Execute a memtomem action by name.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_edit","description":"Edit an existing memory entry in its source markdown file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_embedding_reset","description":"Check or resolve embedding configuration mismatches between DB and current config.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_entity_scan","description":"Scan indexed chunks and extract structured entities (people, dates, decisions, etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_entity_search","description":"Search for chunks containing specific entities.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_eval","description":"Evaluate memory system health and effectiveness.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_expand","description":"Expand a chunk with adjacent context from the same source file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_export","description":"Export indexed memory chunks to a JSON bundle file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_formation_scan","description":"Generate review candidates from one exact session's events; writes no long-term memory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_import","description":"Import memory chunks from a JSON bundle file (produced by mem_export).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_import_notion","description":"Import a Notion export (ZIP or directory) into memtomem.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_import_obsidian","description":"Import an Obsidian vault into memtomem.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_importance_scan","description":"Compute and update importance scores for all chunks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_index","description":"Index or re-index markdown files for hybrid search.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_link","description":"Create a bidirectional link between two chunks.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_list","description":"List all indexed source files with chunk counts and metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_assign","description":"Assign existing chunks to a namespace without re-indexing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_delete","description":"Delete all chunks in a namespace from the index.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_ns_get","description":"Get the current session namespace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_list","description":"List all namespaces and their chunk counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_rename","description":"Rename a namespace (SQL UPDATE, no re-indexing needed).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_set","description":"Set the session-default namespace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_ns_update","description":"Update namespace metadata (description and/or color).","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_pinned_delete","description":"Delete one exact Pinned Context block.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_pinned_get","description":"Read one exact Pinned Context block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_pinned_list","description":"List effective Pinned Context blocks after scope and agent shadowing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_pinned_set","description":"Create or replace a Pinned Context block after privacy and scope gates.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_policy_add","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_policy_delete","description":"Delete a memory lifecycle policy.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_policy_list","description":"List all memory lifecycle policies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_policy_run","description":"Run memory lifecycle policies.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_procedure_list","description":"List all saved procedures.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_procedure_save","description":"Save a reusable procedure (workflow/pattern) to memory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_quality_replay","description":"Replay stored evaluation cases into a deterministic retrieval-quality report.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_read","description":"Read a chunk's content and metadata by UUID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_recall","description":"Recall memories created within a date range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_reflect","description":"Analyze recent memory activity and surface patterns for reflection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_reflect_save","description":"Save a reflection insight derived from memory analysis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_related","description":"Find all chunks linked to the given chunk.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_reset","description":"Delete ALL data (chunks, sessions, history, etc.) and reinitialize the DB.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_schedule_delete","description":"Delete a registered schedule by id.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_schedule_list","description":"List all registered schedules with last-run status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_schedule_register","description":"Register a cron-scheduled job (direct-cron mode).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_schedule_run_now","description":"Run a registered schedule synchronously (out-of-band).","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_scratch_get","description":"Retrieve a value from working memory, or list all entries if no key given.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_scratch_promote","description":"Promote a working memory entry to long-term memory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_scratch_set","description":"Store a value in working memory (scratchpad).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_search","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_search_feedback","description":"Record or list relevance judgments for one observed search run.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_search_history","description":"List past search queries with result counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_search_suggest","description":"Autocomplete search queries from history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_session_end","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_session_list","description":"List recent episodic memory sessions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_session_start","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_stats","description":"Return current memory index statistics: total chunks, sources, and storage backend.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_status","description":"Show indexing statistics and current configuration summary.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_tag_delete","description":"Remove a tag from all chunks that use it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mem_tag_list","description":"List visible tags and their usage counts, ordered by frequency.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_tag_merge","description":"Fold multiple source tags into a single target tag across all chunks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_tag_rename","description":"Rename a tag across all chunks that use it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_timeline","description":"Show how memories about a topic evolved over time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_unlink","description":"Remove a link between two chunks.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-20T11:35:59.890Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:35:59.810Z","components":{"code":{"score":20,"max":25,"notes":["484 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"net.raw-ip","severity":"medium","component":"code","title":"Network call to a raw IP address","evidence":"memtomem-0.6.4/src/memtomem/indexing/url_fetcher.py: …tches what httpx does natively for `https://1.2.3.4/` and the cert is validated against the …"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"memtomem","version":"0.6.4","found":true,"license":"Apache-2.0","dependencyCount":45,"publishedAt":"2026-09-20T06:23:22.020735Z","repositoryUrl":"https://github.com/memtomem/memtomem"}],"repo":{"found":true,"owner":"memtomem","repo":"memtomem","archived":false,"pushedAt":"2026-09-20T07:42:32Z","stars":14,"forks":32,"openIssues":39,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/118508877?v=4","ownerCreatedAt":"2022-11-18T07:00:18Z","license":"Apache-2.0"},"icon":{"url":"https://memtomem.com/favicon.svg","source":"site"},"presence":{"stars":14,"forks":32,"downloadsWeek":null,"license":"Apache-2.0","lastPushAt":"2026-09-20T07:42:32.000Z","score":29}}}},"grade_history":[],"reviews":[]}