{"name":"io.github.lets-order-some-fries/loreweave","slug":"lets-order-some-fries-loreweave","title":null,"description":"Durable agent memory over a markdown vault: bitemporal facts, timelines, hybrid graph search.","url":"https://mcp.market/server/lets-order-some-fries-loreweave","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"ai","tags":["ai","search"],"presence":{"score":26,"stars":0,"forks":1,"downloads_week":167,"last_push_at":"2026-10-09T09:50:58.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/lets-order-some-fries/loreweave","website":null,"version":"0.39.0","remotes":[],"packages":[{"registryType":"npm","identifier":"loreweave","version":"0.39.0","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"--allow-scripts=better-sqlite3","type":"positional","valueHint":"allow-scripts"}],"packageArguments":[{"value":"--vault","type":"positional","valueHint":"vault-flag"},{"description":"Absolute path to your markdown vault","isRequired":true,"format":"filepath","type":"positional","valueHint":"vault_path"},{"value":"serve","type":"positional","valueHint":"serve"},{"value":"--mcp","type":"positional","valueHint":"mcp-flag"}]}],"tools":[{"name":"lore_aggregate_facts","description":"Deterministic aggregation over fact history \\u2014 counts grouped by object/subject/predicate with date-range filters. Use for \"how many X\", \"which Y most often\" questions; similarity search cannot answer these reliably. Returns { groups, totalGroups, limit }: `groups` is the top `limit` (default 100), so read `totalGroups` for \"how many distinct values are there\" rather than counting `groups`, an","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_assert_fact","description":"Record an atomic fact (subject :: predicate :: object) with bitemporal validity. Contradicting facts in the same slot are superseded automatically (never deleted; history stays queryable). The fact is journalled to lore/journal/ in markdown, so the vault remains the source of truth. Use for durable knowledge: decisions, states, preferences, relationships.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_capture","description":"Append a timestamped line to lore/inbox.md (or another vault note). Use for fleeting observations worth keeping that are not atomic facts. The captured text is searchable immediately. Never overwrites anything, and never writes outside the vault \\u2014 a path that escapes it, including through a symlink, is refused.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_context_pack","description":"Progressive-disclosure primer: vault stats, top entities, recently modified notes, currently-valid facts, and (if topic given) top search hits. Call once at session start to orient; then drill down with lore_search / lore_read_note. Every list here is a sample: when one is cut, a `truncated` field names it with { shown, of, rest } and the tool to call for the remainder \\u2014 so treat a missing it","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_dream_report","description":"Run the consolidation pass: duplicate passages, contradicting/recently-changed facts, stale knowledge needing review, suggested missing links, orphan notes. Leaves the vault untouched unless apply=true (which writes a digest + review queue under lore/); it does perform index maintenance either way, which changes no results. Findings are a summary \\u2014 pass verbose:true for every one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"lore_index","description":"Incrementally sync the markdown vault into the index. Call after writing files to the vault through anything OTHER than lore_* tools (an editor, another agent, plain fs writes) \\u2014 the lore_* write tools index their own writes, so their content is searchable immediately without this.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_invalidate_fact","description":"Close the currently-valid fact in a (subject, predicate) slot without asserting a replacement \\u2014 e.g. \"no longer true\". Journalled; history preserved.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_mark_used","description":"Reinforce passages that actually contributed to your answer (spaced-repetition signal: used memories decay slower). Call after citing a note.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_propose_facts","description":"Returns candidate facts mined from a note's structure that are NOT yet in the fact store, for you to adjudicate. The engine only auto-accepts unambiguous field syntax (frontmatter, `key:: value`, `- [key] value`); prose formatting like `- **Owner:** Priya` is precise on entity notes and noisy on report notes, so it is surfaced here instead of assumed. Review these and call lore_assert_fact for the","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_query_facts","description":"Query the bitemporal fact store. Default: currently-valid facts. asOf answers \"what was true on DATE\", asKnownAt answers \"what did we know on DATE\"; includeHistory shows the full supersession chain. Prefer this over lore_search for factual slots (status, location, role, preference). Returns { facts } and, when the result is a sample, a `truncated` field with { shown, of, rest } \\u2014 narrow by su","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_read_note","description":"Read the raw markdown of a note by vault-relative path (as returned in search results). Never reads outside the vault \\u2014 a path that escapes it, including through a symlink whose target lives elsewhere, is refused, and such a file is not indexed or searchable either. After reading a note that answered the question, call lore_mark_used to reinforce it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_resume","description":"What changed since this tool was last called: notes edited, facts asserted, and knowledge updates (slot: old \\u2192 new). Call once at session start to continue where the previous session left off \\u2014 the delta is computed from record time, so the same watermark always yields the same answer. Calling with no `since` consumes the delta (advances the watermark); pass an explicit `since` for a pur","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_review","description":"Important-but-fading knowledge: blocks whose retrievability has decayed below the threshold despite mattering, plus long-untouched open facts. This is the spaced-repetition loop made operable: review the list, then call lore_mark_used on anything still relevant \\u2014 use is what reinforces stability. Deterministic, computed from the vault's own fitted forgetting curve.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_search","description":"Hybrid retrieval over the markdown vault: BM25 + knowledge-graph spreading activation (+ dense embeddings when configured). Returns one passage per note \\u2014 the section that best covers your query \\u2014 with the file it came from, how much of your query it matched, and any entity that linked it in. Use for any \"what do my notes say about X\" question, including multi-hop associations where the ","write_action":false,"price_micros":0,"input_schema":null},{"name":"lore_timeline","description":"Chronological history of an entity in one call: every value change from the bitemporal fact store (with what each value replaced and when it stopped holding) merged with content-dated passages mentioning the entity. Use for \"what happened to X\", \"what was X before it changed\", \"history of X\" \\u2014 instead of sampling repeated as-of fact queries and windowed searches.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-31T05:53:42.715Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-31T05:53:42.672Z","components":{"code":{"score":25,"max":25,"notes":["5 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 22 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"loreweave","version":"0.39.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-10-09T10:21:11.577Z","repositoryUrl":"git+https://github.com/lets-order-some-fries/loreweave.git","weeklyDownloads":167}],"repo":{"found":true,"owner":"lets-order-some-fries","repo":"loreweave","archived":false,"pushedAt":"2026-10-09T09:50:58Z","stars":0,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/34904987?v=4","ownerCreatedAt":"2017-12-28T04:36:58Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/34904987?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":1,"downloadsWeek":167,"license":"MIT","lastPushAt":"2026-10-09T09:50:58.000Z","score":26}}}},"grade_history":[],"reviews":[]}