{"$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-05T16:25:13.900Z","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory","markdownUrl":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory.md","server":{"slug":"komakeule57-maker-frugal-memory","name":"frugal-memory","registryName":"io.github.komakeule57-maker/frugal-memory","description":"Memory for AI assistants in one SQLite file: full-text search, no vectors, no embeddings.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"frugal-memory","type":"pypi","identifier":"frugal-memory","withdrawn":false,"url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory","version":"0.3.1","transport":"stdio","scoredAt":"2026-11-05T10:21:05.425Z"},"score":{"total":64,"tier":"medium","status":"scored","weekDelta":15,"history":[{"date":"2026-11-05","total":64},{"date":"2026-11-04","total":64},{"date":"2026-11-03","total":64},{"date":"2026-11-02","total":64},{"date":"2026-11-01","total":64},{"date":"2026-10-31","total":64},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":49},{"date":"2026-10-28","total":49},{"date":"2026-10-27","total":52},{"date":"2026-10-26","total":52},{"date":"2026-10-25","total":66},{"date":"2026-10-24","total":66},{"date":"2026-10-23","total":65},{"date":"2026-10-22","total":50},{"date":"2026-10-21","total":66},{"date":"2026-10-20","total":66},{"date":"2026-10-19","total":51}]},"categories":[{"name":"Supply Chain Security","score":94,"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 (build-time code we could not rule out (a Hatch, PDM or setuptools build hook, a dynamic version we could not read statically, shipped VCS metadata or a stray root module)) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does.","1 of 28 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.unreviewed","args":{"hooks":"build_hook"}},{"code":"dephealth.assessed","args":{"deps":"28","unhealthy":"1"}}]},{"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 (MIT).","Actively maintained (last published 7 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":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"7"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":62,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1910 tokens (~238/item across 8 items; 8 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":"238","items":"8","tools":"8","tokens":"1910","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"fail","reasons":["Stability check failed: the tool surface changed between 0.1.4 and 0.3.1: 6 tool removals, 0 breaking changes, 6 additions."],"codes":[{"code":"stability.version_churn","args":{"to":"0.3.1","days":"17","from":"0.1.4","added":"6","breaks":"0","removed":"6"}}]},{"name":"Tool Coverage","score":71,"verdict":"fail","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","0% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"0"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 9 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_none","args":{"tools":"8"}},{"code":"toolsafety.manipulation_clean","args":{"units":"9","judged":"9"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"frugal-memory","type":"pypi","identifier":"frugal-memory","withdrawn":false,"score":64,"current":true,"url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory","markdownUrl":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"frugal-memory"},{"label":"Version","value":"0.3.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"remember","title":null,"description":"Stores one fact permanently in memory.\n\nUse it for knowledge a later session needs: a decision with its reason, a\npitfall, a measured number, an interface. Not for secrets, guesses or\nshort-lived details. Search with recall first; if an entry covers the fact,\nsupersede that one.\n\nReturns the new id, existing entries that resemble it (candidates to\nsupersede) and a note when the tag is new - often a misspelling.\n\nArgs:\n    text: The fact. A text that belongs to two kinds is two entries.\n    tags: The project, i.e. WHERE the knowledge belongs (spaces or commas\n        between several).\n    kind: WHICH KIND of knowledge: interface (signature, file name,\n        command, data format), pitfall (the obvious approach is wrong\n        because ...), decision (with rationale), measurement (a number plus\n        its criterion), workflow (how to work with this user), history\n        (chronicle, hidden from recall's default view). Empty = unsorted.\n    supersedes: Ids this entry replaces, e.g. \"12,34\". Hidden, not deleted.","inputs":[{"name":"kind","type":"string","required":false,"description":null},{"name":"supersedes","type":"string","required":false,"description":null},{"name":"tags","type":"string","required":false,"description":null},{"name":"text","type":"string","required":true,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":274},{"name":"recall","title":null,"description":"Searches memory by words, best matches first.\n\nUse it first, before searching files or the web for something noted before.\nIt matches words, not meaning: inflected forms count (\"configured\" ->\n\"configuring\"), synonyms don't - if nothing fits, retry in the other\nlanguage your notes may use. No search terms? Browse with topics.\n\nReturns a preview per hit (id, kind, date, title line). Read the ones you\nneed with show(\"376,481\"), or set full=True for a narrow question.\n\nArgs:\n    query: Search term(s), FTS5 syntax allowed (e.g. \"sqlite AND fts5\", \"proj*\").\n    limit: Maximum number of hits (default 8).\n    kind: Restrict to kinds of knowledge, e.g. \"pitfall,decision\".\n        Possible: interface, pitfall, decision, measurement, workflow,\n        history, unsorted, all. Default: everything except history -\n        otherwise the chronicle drowns out every search for a detail.\n    tag: Restrict to a project, e.g. \"spaceship\". Several tags separated\n        by comma or space are OR-combined. Sub-tags are included:\n        \"lighthouse\" also matches \"lighthouse-project\", but\n        \"mcp-memory-server\" does not match \"mcp-memory\". topics() lists\n        which tags exist.\n    full: Full text instead of preview (default: no), capped like show.\n    include_superseded: Also show superseded entries (default: no).","inputs":[{"name":"full","type":"boolean","required":false,"description":null},{"name":"include_superseded","type":"boolean","required":false,"description":null},{"name":"kind","type":"string","required":false,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"query","type":"string","required":true,"description":null},{"name":"tag","type":"string","required":false,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":367},{"name":"show","title":null,"description":"Returns the named entries in full text.\n\nUse it after recall or topics, once you know which entries you need - it\ntakes ids, not search terms. Superseded entries are included: whoever asks\nfor the id means that one.\n\nReturns about 6000 characters per call, in the order asked. Whatever doesn't\nfit comes back as a title line plus the call that fetches it; unknown ids\nare named as such.\n\nArgs:\n    ids: One or more entry ids, e.g. \"376,481\". Most wanted first.\n    full: Everything asked for at once, without the cap (default: no).","inputs":[{"name":"full","type":"boolean","required":false,"description":null},{"name":"ids","type":"string","required":true,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":150},{"name":"topics","title":null,"description":"Browses memory: the board of all tags, or the title index of one project.\n\nUse it when search terms are missing - a project picked up after months,\nor \"what happened here lately\". To find a specific fact, recall is faster.\n\nReturns the tag board (entries per tag and kind) or, with a tag, that\nproject's title lines, newest first, one page at a time. Follow up with\nshow(\"...\") or recall(query, tag=\"...\").\n\nArgs:\n    tag: Project, e.g. \"spaceship\". Empty = tag board.\n    limit: Rows per page (default 40 for the board, 30 for the title index).\n    page: Page of the title index (default 1 = the newest).\n    all: Whole title index at once, grouped by kind.","inputs":[{"name":"all","type":"boolean","required":false,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"page","type":"integer","required":false,"description":null},{"name":"tag","type":"string","required":false,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":203},{"name":"consolidate","title":null,"description":"Finds groups of entries that say largely the same thing.\n\nUse it for tidying up. Read-only, changes nothing: merging is a judgment\ncall - replace a group by one new entry via remember(..., supersedes=\"...\").\nCompares shared word stems weighted by rarity, not meaning; identical\ncopies are always found. A few seconds for thousands of entries.\n\nReturns how many entries and pairs were compared, then the groups, largest\nfirst, each with its best similarity and its entries (id, kind, date,\ntitle) - or that nothing reached the threshold.\n\nArgs:\n    tag: Only consider entries from this project (empty = all). Sub-tags\n        are included, as in recall.\n    kind: Only consider entries of this kind/these kinds, comma-separated.\n        Default \"all\"; \"history\" alone is the most rewarding case.\n    threshold: Share of the weighted stems two entries must have in\n        common, 0 to 1. Default 0.5; 0.8 shows only near-copies.\n    groups: Maximum number of groups reported (default 5).","inputs":[{"name":"groups","type":"integer","required":false,"description":null},{"name":"kind","type":"string","required":false,"description":null},{"name":"tag","type":"string","required":false,"description":null},{"name":"threshold","type":"number","required":false,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":261},{"name":"check","title":null,"description":"Has a small language model judge how the named entries relate.\n\nUse it on a group from consolidate, or on two entries that seem to disagree,\nto ask whether a CONTRADICTION is behind it, PROGRESS (a newer state), or\nnothing (INDEPENDENT). Not authoritative: measured 67 % correct on 70 German\npairs, so the result says where to look, not what is true.\n\nReturns one line per pair. Each pair is asked in both directions; only what\ncomes back the same both times is reported, otherwise \"disputed\". At most\n5 pairs per call, roughly 10 seconds each.\n\nOpt-in: needs MEMORY_FC_URL and MEMORY_FC_MODEL (any OpenAI-compatible\nendpoint; MEMORY_FC_KEY if it wants a key). Without them this tool\ndoes nothing and says so. When set up, up to 200 characters of each note\nare sent there.\n\nArgs:\n    ids: Two or more entry ids, e.g. \"249,255\".","inputs":[{"name":"ids","type":"string","required":true,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":220},{"name":"forget","title":null,"description":"Hides entries that are wrong or obsolete and have no replacement.\n\nIf a newer entry replaces them, use remember(..., supersedes=...) instead.\nNothing is deleted: show and recall(..., include_superseded=True) still\nfind them, undo=True brings them back.\n\nReturns the ids changed and names unknown ones.\n\nArgs:\n    ids: One or more entry ids, e.g. \"12,34\".\n    reason: Why - shown later next to the superseded entry.\n    undo: True brings superseded entries back.","inputs":[{"name":"ids","type":"string","required":true,"description":null},{"name":"reason","type":"string","required":false,"description":null},{"name":"undo","type":"boolean","required":false,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":136},{"name":"classify","title":null,"description":"Sets the kind of knowledge for existing entries.\n\nUse it in passing on entries recall shows as \"unsorted\"; the backlog need\nnot be sorted in one sitting. Writes only the kind - text, tags, ids and\nsuperseded status stay as they are - and is undone by classifying again.\n\nReturns the ids changed, names unknown ids, and how many live entries are\nstill unsorted.\n\nArgs:\n    ids: One or more entry ids, e.g. \"376,481\"; a range \"376-380\" means\n        every id in between.\n    kind: Exactly one of: interface, pitfall, decision, measurement,\n        workflow, history. \"unsorted\" undoes the classification.","inputs":[{"name":"ids","type":"string","required":true,"description":null},{"name":"kind","type":"string","required":true,"description":null}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":167}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T10:21:05.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":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"},{"hook":"build_hook","tier":"unreviewed"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":28,"partial":false,"deprecated":null,"stale":null,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-19","recent":[{"id":"chg_01a18c51-3dc1-75a5-a606-720c54ba48c4","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18c51-3dc1-75a5-a606-720c54ba48c4"},{"id":"chg_01a18c51-3dc2-78ac-8a97-05b8ef8783c5","kind":"score.total_changed","summary":"Trust score (49 → 64)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18c51-3dc2-78ac-8a97-05b8ef8783c5"},{"id":"chg_01a18755-a1ab-717a-b09a-031542163485","kind":"check.measure","summary":"Schema quality (good → excellent)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18755-a1ab-717a-b09a-031542163485"},{"id":"chg_01a18755-a1ac-73e1-bad5-eb92a7e9db1e","kind":"package.version_changed","summary":"Package version (0.3.0 → 0.3.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18755-a1ac-73e1-bad5-eb92a7e9db1e"},{"id":"chg_01a18289-8aaa-7809-8dd3-15f3c65eef61","kind":"check.verdict","summary":"Stability (0.27 → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18289-8aaa-7809-8dd3-15f3c65eef61"},{"id":"chg_01a18289-8aab-7762-83d5-d791df32ff73","kind":"check.measure","summary":"Schema quality (287 → 222)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18289-8aab-7762-83d5-d791df32ff73"},{"id":"chg_01a18289-8aab-7d2b-8b74-b257b53514c3","kind":"package.version_changed","summary":"Package version (0.2.3 → 0.3.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18289-8aab-7d2b-8b74-b257b53514c3"},{"id":"chg_01a18289-8aac-724a-80ff-202af397c8db","kind":"score.total_changed","summary":"Trust score (68 → 49)","materiality":"functional","direction":"regression","scoreDelta":-19,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18289-8aac-724a-80ff-202af397c8db"},{"id":"chg_01a18265-904c-77fb-8b7b-695111fc3082","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18265-904c-77fb-8b7b-695111fc3082"},{"id":"chg_01a18265-904e-7398-8598-cdd4aba278ef","kind":"score.total_changed","summary":"Trust score (52 → 68)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a18265-904e-7398-8598-cdd4aba278ef"},{"id":"chg_01a17e74-3a5b-7cab-9aae-76852a02e57f","kind":"package.version_changed","summary":"Package version (0.2.0 → 0.2.3)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17e74-3a5b-7cab-9aae-76852a02e57f"},{"id":"chg_01a17e05-5fa6-7631-af5a-0043aac3997b","kind":"package.version_changed","summary":"Package version (0.2.0 → 0.2.2)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17e05-5fa6-7631-af5a-0043aac3997b"},{"id":"chg_01a17d96-195a-704c-9884-71108ec6626e","kind":"package.version_changed","summary":"Package version (0.2.0 → 0.2.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17d96-195a-704c-9884-71108ec6626e"},{"id":"chg_01a17d96-195c-729e-a14f-69ef4d599a13","kind":"score.total_changed","summary":"Trust score (67 → 52)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17d96-195c-729e-a14f-69ef4d599a13"},{"id":"chg_01a17d3b-7657-7f12-841d-db7dab443c59","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17d3b-7657-7f12-841d-db7dab443c59"},{"id":"chg_01a17d3b-765a-7863-9739-64f13b0ef89e","kind":"score.total_changed","summary":"Trust score (52 → 67)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17d3b-765a-7863-9739-64f13b0ef89e"},{"id":"chg_01a17917-153f-75d3-91fd-1e2624be03c3","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17917-153f-75d3-91fd-1e2624be03c3"},{"id":"chg_01a17917-1540-7a1c-838b-0e2bc1fa0ecc","kind":"package.version_changed","summary":"Package version (0.1.5 → 0.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17917-1540-7a1c-838b-0e2bc1fa0ecc"},{"id":"chg_01a17917-1541-7132-ada4-5c4c543e9d99","kind":"score.total_changed","summary":"Trust score (67 → 52)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a17917-1541-7132-ada4-5c4c543e9d99"},{"id":"chg_01a1784d-dcae-76eb-9239-e8dad4b474a8","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory#chg-chg_01a1784d-dcae-76eb-9239-e8dad4b474a8"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory/changelog.json"},"links":{"html":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory","markdown":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory.md","changelogJson":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory/changelog.json","changelogRss":"https://verifymcp.io/servers/komakeule57-maker-frugal-memory/frugal-memory.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/frugal-memory/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/frugal-memory"},{"label":"Repository","href":"https://github.com/komakeule57-maker/frugal-memory"}]}}