{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:52:57.594Z","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex","markdownUrl":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex.md","server":{"slug":"stoneskin-open-memex","name":"open-memex","registryName":"io.github.stoneskin/open-memex","description":"Local-first memory for AI coding agents — Markdown + SQLite FTS5, shared across editors via MCP.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"open-memex","type":"npm","identifier":"open-memex","withdrawn":false,"url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex","version":"0.8.1","transport":"stdio","scoredAt":"2026-11-05T07:28:33.295Z"},"score":{"total":80,"tier":"high trust","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":80},{"date":"2026-11-04","total":80},{"date":"2026-11-03","total":80},{"date":"2026-11-02","total":79},{"date":"2026-11-01","total":79},{"date":"2026-10-31","total":78},{"date":"2026-10-30","total":78},{"date":"2026-10-29","total":77},{"date":"2026-10-28","total":77},{"date":"2026-10-27","total":77},{"date":"2026-10-26","total":76},{"date":"2026-10-25","total":76},{"date":"2026-10-24","total":75},{"date":"2026-10-23","total":75},{"date":"2026-10-22","total":74},{"date":"2026-10-21","total":74},{"date":"2026-10-20","total":73},{"date":"2026-10-19","total":73},{"date":"2026-10-18","total":72},{"date":"2026-10-17","total":72},{"date":"2026-10-16","total":71},{"date":"2026-10-15","total":71},{"date":"2026-10-14","total":70},{"date":"2026-10-13","total":37},{"date":"2026-10-12","total":37},{"date":"2026-10-11","total":37},{"date":"2026-10-04","total":66}]},"categories":[{"name":"Supply Chain Security","score":92,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Declares code that runs automatically (postinstall) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does.","30 of 96 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.unreviewed","args":{"hooks":"postinstall"}},{"code":"dephealth.assessed","args":{"deps":"96","unhealthy":"30"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (Apache-2.0).","Actively maintained (last published 0 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"Apache-2.0"}},{"code":"maintenance.recent","args":{"age_days":"0"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":63,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 3325 tokens (~302/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"302","items":"11","tools":"11","tokens":"3325","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":99,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","97% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"97"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_declared","args":{"pct":"100","annotated":"1","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"12","judged":"12"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"open-memex","type":"npm","identifier":"open-memex","withdrawn":false,"score":80,"current":true,"url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex","markdownUrl":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"open-memex"},{"label":"Version","value":"0.8.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"memory_add","title":null,"description":"Save a fact, preference, decision, or note to persistent local memory. Call this PROACTIVELY whenever the user shares something worth remembering across sessions — project conventions, tool choices, personal preferences, decisions made, error fixes and their causes. Worth saving: decisions and their reasons, preferences, conventions, gotchas, approaches tried and abandoned. Not worth saving: one-off task details or anything re-derivable from the code. Do not wait to be asked. For facts you infer yourself rather than the user stating, propose them first and save only on approval. Keep each memory to one self-contained statement; attach aliases when the parameter is available. If a note tells you the user's own wording was already stored verbatim this turn, that statement is already saved: do not retry it in a rewording — save only what that text does not contain, or use memory_supersede on the given id. Default scope is the current project; use the personal scope for facts about the user that apply across all projects. Returns the new memory's id; an identical fact already stored returns that id instead of duplicating.","inputs":[{"name":"alias","type":"string","required":false,"description":"D81: nickname this memory defines (e.g. 香蕉计划). Pairs with `target`: the alias memory expands queries in its scope at search time, both directions, no reindex. Explicit vocabulary — always stored, not…"},{"name":"aliases","type":"array","required":false,"description":"Optional: alternate phrasings of this fact — synonyms, another way a question might be worded, equivalents in the user's other language (e.g. 节假日 for 'public holidays'). They are indexed with the mem…"},{"name":"content","type":"string","required":true,"description":"The fact to remember. One idea per memory."},{"name":"scope","type":"string","required":false,"description":"Memory scope. `project` = tied to this repo. `personal` = global across all your projects. Default: project."},{"name":"source","type":"string","required":false,"description":"Where this memory came from. Default: tool. Pass 'inference' for agent-proposed captures (V2-DESIGN §3.5)."},{"name":"tags","type":"array","required":false,"description":"Optional tags for filtering."},{"name":"target","type":"string","required":false,"description":"D81: what `alias` refers to (e.g. 支付系统重构项目). Only meaningful with `alias`."},{"name":"type","type":"string","required":false,"description":"Category of memory. Default: fact."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":513},{"name":"memory_search","title":null,"description":"Search persistent memory by keyword (BM25 full-text). Returns matching memories from the current project and/or personal scope. Call before asking the user about past decisions, conventions, or preferences they may have told you before. Search well: break the question into its concepts and try 2–3 phrasings per concept — synonyms, the user's other language, shorter keyword forms — and check the other scope too, before concluding nothing is stored. Results are ranked by BM25 within review tiers — reviewed (approved/published) project memories come first. `limit` caps how many come back (default 8) and `type` restricts to one memory type.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Max results to return (default 8)."},{"name":"query","type":"string","required":true,"description":"Free-text query. File paths, error strings, identifiers work well."},{"name":"scope","type":"string","required":false,"description":"Which scope(s) to search. Default: both."},{"name":"type","type":"string","required":false,"description":"Restrict to memories of this type. Closed taxonomy — a misspelled type is rejected, never silently empty."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":222},{"name":"memory_list","title":null,"description":"List memories in a scope, newest first, as a numbered inventory. Each line keeps the raw fields — [type] id=… created=… source=… — say them back to the user in plain words (source=user → 'you told me this'; inference → 'I inferred this, check me'; keyword → 'caught from your own wording'), never read the raw id aloud unless they ask. When the user asks 'what do you remember about me?', use scope=both and present the inventory conversationally. The user may point at an entry by its number ('delete #3'): numbers are only valid for the listing you just produced — re-run memory_list, read the candidate back in full, and get a confirmation before calling memory_forget (deletion is permanent). include=all is the audit view (superseded versions, retracted, archived also shown). `type` filters to one memory type; `limit` caps how many entries come back.","inputs":[{"name":"include","type":"string","required":false,"description":"D68: `active` (default) shows what is currently remembered — newest version of each fact, retracted/archived hidden. `all` is the audit view: every stored row including superseded versions and hidden…"},{"name":"limit","type":"integer","required":false,"description":"Max entries to list, newest first (default 20)."},{"name":"scope","type":"string","required":false,"description":"Which scope(s) to list. `project` = tied to this repo. `personal` = global across all your projects. `both` lists each scope's newest. Default: project."},{"name":"type","type":"string","required":false,"description":"Only list memories of this type. Closed taxonomy — a misspelled type is rejected, never silently empty."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":368},{"name":"memory_supersede","title":null,"description":"Replace an existing memory with a newer version. The old memory is kept as history (status: superseded) and retrieval returns the new one. Use when a saved fact becomes outdated and should be replaced rather than duplicated. Only active memories can be superseded; the new memory inherits type, tags, and aliases unless you pass replacements. An unknown id is reported back as a failure; nothing is written.","inputs":[{"name":"alias","type":"string","required":false,"description":"D81: nickname the new memory defines (e.g. 香蕉计划). Omitted = inherit the old memory's alias."},{"name":"aliases","type":"array","required":false,"description":"Optional: alternate phrasings of this fact — synonyms, another way a question might be worded, equivalents in the user's other language (e.g. 节假日 for 'public holidays'). They are indexed with the mem…"},{"name":"content","type":"string","required":true,"description":"The new, corrected content."},{"name":"id","type":"string","required":true,"description":"ID of the memory being replaced."},{"name":"tags","type":"array","required":false,"description":"Optional tags for the new memory."},{"name":"target","type":"string","required":false,"description":"D81: what `alias` refers to (e.g. 支付系统重构项目). Omitted = inherit."},{"name":"type","type":"string","required":false,"description":"Category of the new memory. Defaults to the old memory's type."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":291},{"name":"memory_forget","title":null,"description":"Delete a memory by id. Use when the user asks to forget something. To replace an outdated fact with a corrected one instead of deleting it, use memory_supersede. Deletion is permanent: before deleting, restate the memory's content to the user and get a confirmation. With soft=true the memory is hidden instead (retracted: out of lists and search, file kept, one-way).","inputs":[{"name":"id","type":"string","required":true,"description":null},{"name":"soft","type":"boolean","required":false,"description":"D68: hide instead of delete. The memory is retracted — excluded from lists and search — but its file stays. Retraction is one-way (D64): it does not come back; to restore the fact, save it again as a…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":168},{"name":"memory_status","title":null,"description":"Show the project memory sync pipeline: drafts waiting in the outbox (appdata), memories in the repo awaiting review or published, and any repo files not yet committed. Call this at session start, when the server reports drafts waiting for review, or when the user says 'sync memory' (or '同步记忆'); then ask the user which drafts to sync. For the memories themselves use memory_list; for PR review state use memory_pr_status. (MCP server and the `open-memex sync-status` CLI; the opencode native plugin does not expose this tool.)","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":126},{"name":"memory_submit","title":null,"description":"Move outbox drafts into the repo memory dir for review: copies the drafts in as proposed (or keeps a local approval), commits locally on the current branch, and moves the outbox originals out. Never creates a branch on its own — pass branch= only with the user's explicit approval for the full chain. Prints the push and PR commands — those need the user's explicit approval and are never run automatically. (MCP server and the `open-memex submit` CLI; the opencode native plugin does not expose this tool.) Unknown ids or a failed local commit abort the submit with the reason; nothing is published automatically.","inputs":[{"name":"base","type":"string","required":false,"description":"PR base branch override. Default: the branch the submit ran on."},{"name":"branch","type":"string","required":false,"description":"Create this branch and submit onto it. If omitted, submit stays on the current branch — branches are never auto-created. Only pass this when the user explicitly approved the full chain (branch + push…"},{"name":"ids","type":"array","required":true,"description":"Outbox draft ids to submit."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":215},{"name":"memory_propose","title":null,"description":"Copy personal memories into the project outbox as review drafts. The personal originals stay put. Use this when personal knowledge should enter a project's review flow; memory_submit then moves the drafts into the repo, and memory_promote advances drafts already there. (MCP server and the `open-memex propose` CLI; the opencode native plugin does not expose this tool.)","inputs":[{"name":"ids","type":"array","required":true,"description":"Personal memory ids to copy into the project outbox."},{"name":"localApprove","type":"boolean","required":false,"description":"Single-developer shortcut: mark the copies approved immediately."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":119},{"name":"memory_promote","title":null,"description":"Advance a project memory one step up the review ladder (proposed → approved → published), or reject it with a note. Rejected memories are never deleted — they can be revised and resubmitted. One step per call; an unknown id or a memory already published errors. Pass `by` to record the reviewer when it should differ from the default (e.g. approving on the strength of someone else's review). For brand-new outbox drafts, memory_submit is the entry point. (MCP server and the `open-memex promote` CLI; the opencode native plugin does not expose this tool.)","inputs":[{"name":"by","type":"string","required":false,"description":"Reviewer name override."},{"name":"id","type":"string","required":true,"description":"Project memory id."},{"name":"note","type":"string","required":false,"description":"Review note recorded on reject."},{"name":"reject","type":"boolean","required":false,"description":"Reject instead of advancing."},{"name":"resubmit","type":"boolean","required":false,"description":"Move rejected back to proposed for another round."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":192},{"name":"memory_resolve","title":null,"description":"List git-conflicted memory files, or attempt a field-level 3-way merge of one. Semantic conflicts are reported, never auto-resolved. Run it when a git pull or merge leaves memory files conflicted; the merged file is written in place (undo with git if the merge is wrong). For PR review state rather than file conflicts, use memory_pr_status. (MCP server and the `open-memex resolve` CLI; the opencode native plugin does not expose this tool.)","inputs":[{"name":"target","type":"string","required":false,"description":"Memory id or file path to resolve. Omit to list conflicts."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"memory_pr_status","title":null,"description":"Read the current branch's GitHub PR and map its review state onto each in-repo memory: merged PR → published, PR approval → approved (approved_by = reviewer), changes-requested → suggestion only. Report by default — that mode changes nothing; apply=true writes the mapped transitions to the local files (still no push). (MCP server and the `open-memex pr-status` CLI; the opencode native plugin does not expose this tool.)","inputs":[{"name":"apply","type":"boolean","required":false,"description":"Perform the mapped review transitions locally (no push). Default: report only."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":123}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T07:28:33.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"postinstall","tier":"unreviewed"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":96,"partial":false,"deprecated":null,"stale":30,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-04","recent":[{"id":"chg_01a1a051-82d8-71e8-b5c7-5a4b60290bcc","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a1a051-82d8-71e8-b5c7-5a4b60290bcc"},{"id":"chg_01a1a051-82d9-7d21-90f0-c7caeff2ef96","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a1a051-82d9-7d21-90f0-c7caeff2ef96"},{"id":"chg_01a1a051-82da-7670-8fec-be448d09080c","kind":"score.total_changed","summary":"Trust score (79 → 80)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a1a051-82da-7670-8fec-be448d09080c"},{"id":"chg_01a19b29-0671-736e-8209-55e5f19df0bd","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a19b29-0671-736e-8209-55e5f19df0bd"},{"id":"chg_01a19604-65f8-776e-982e-3a9a2efa2f2e","kind":"score.total_changed","summary":"Trust score (78 → 79)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a19604-65f8-776e-982e-3a9a2efa2f2e"},{"id":"chg_01a18bb7-b380-7b6a-9bf7-511d9e5b39a0","kind":"score.total_changed","summary":"Trust score (77 → 78)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a18bb7-b380-7b6a-9bf7-511d9e5b39a0"},{"id":"chg_01a17c41-9483-7ce2-93fe-decdcbe96795","kind":"score.total_changed","summary":"Trust score (76 → 77)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a17c41-9483-7ce2-93fe-decdcbe96795"},{"id":"chg_01a171f3-cea5-7bfd-b32f-812df4e1ccf2","kind":"score.total_changed","summary":"Trust score (75 → 76)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a171f3-cea5-7bfd-b32f-812df4e1ccf2"},{"id":"chg_01a167a6-c707-7b06-b3c1-7b005bb93e35","kind":"score.total_changed","summary":"Trust score (74 → 75)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a167a6-c707-7b06-b3c1-7b005bb93e35"},{"id":"chg_01a15d59-24d2-7108-a39d-5dab867f5daf","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a15d59-24d2-7108-a39d-5dab867f5daf"},{"id":"chg_01a15d59-24d3-72f2-b0dc-da411f5c13e7","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a15d59-24d3-72f2-b0dc-da411f5c13e7"},{"id":"chg_01a15849-d308-70ec-b2f2-3cb4a3f7ab12","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a15849-d308-70ec-b2f2-3cb4a3f7ab12"},{"id":"chg_01a1530b-2035-7817-9c9f-862e906d0c37","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-19","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a1530b-2035-7817-9c9f-862e906d0c37"},{"id":"chg_01a148bd-c4c6-7133-a130-4af96f9f1034","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-17","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a148bd-c4c6-7133-a130-4af96f9f1034"},{"id":"chg_01a13e73-6142-7c1b-aa43-b9c81421447a","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13e73-6142-7c1b-aa43-b9c81421447a"},{"id":"chg_01a13c64-ba8e-74d4-8757-f0444eed5f75","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13c64-ba8e-74d4-8757-f0444eed5f75"},{"id":"chg_01a13c64-ba8f-7616-87a8-2a0be5a4aa56","kind":"check.measure","summary":"Schema quality (257 → 302)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13c64-ba8f-7616-87a8-2a0be5a4aa56"},{"id":"chg_01a13c64-ba8f-7be2-9d2d-1dd49382f21a","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13c64-ba8f-7be2-9d2d-1dd49382f21a"},{"id":"chg_01a13c64-ba90-71d4-aa4c-f3f0edbba3c4","kind":"check.measure","summary":"Tool coverage (88% → 97%)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13c64-ba90-71d4-aa4c-f3f0edbba3c4"},{"id":"chg_01a13c64-ba90-7732-b30f-013cb1fc0664","kind":"check.reverified","summary":"Stability (unverified → 0.33)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex#chg-chg_01a13c64-ba90-7732-b30f-013cb1fc0664"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex/changelog.json"},"links":{"html":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex","markdown":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex.md","changelogJson":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex/changelog.json","changelogRss":"https://verifymcp.io/servers/stoneskin-open-memex/open-memex.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/open-memex"},{"label":"Socket report","href":"https://socket.dev/npm/package/open-memex"},{"label":"Repository","href":"https://github.com/stoneskin/open-memex"},{"label":"Website","href":"https://stoneskin.github.io/open-memex/"}]}}