@oomkapwn/enquire-mcp 3.7.7 → 3.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,124 @@
2
2
 
3
3
  All notable changes to this project will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [3.7.9] — 2026-05-16
6
+
7
+ > **TL;DR:** Round-11 audit response — **positioning permeation completion**. v3.7.8 calibrated the GitHub About + Topics + README hero + npm description, but the same pass missed `docs/QUICKSTART.md`, `docs/api.md`, `tests/github-metadata-invariant.test.ts`, and `CLAUDE.md` status section. v3.7.9 syncs all 5 surfaces. **786 tests unchanged.** Zero code changes. Round-11 caught the same class of bug v3.7.4 caught (instance-fix-not-class-fix): v3.7.8 was an instance fix (key surfaces only), the broader class needed propagation to all positioning surfaces.
8
+
9
+ **Patch — positioning permeation completion (the v3.7.8 class fix).**
10
+
11
+ ### Critical methodological correction — v3.7.8 was instance fix, class needed propagation
12
+
13
+ v3.7.8 changed:
14
+ - README hero
15
+ - README image alt text + 4 other README mentions
16
+ - `package.json#description`
17
+ - GitHub About (out-of-band)
18
+ - GitHub Topics (out-of-band)
19
+
20
+ But the **class** of "positioning surfaces" also includes:
21
+ - `docs/QUICKSTART.md` agent list (2 mentions)
22
+ - `docs/api.md` lead paragraph
23
+ - `tests/github-metadata-invariant.test.ts` REQUIRED_TOPICS + ABOUT_LEADS_WITH (the invariant that would have CAUGHT this drift was itself out of sync — it carried v3.7.0 values across v3.7.0 → v3.7.8 metadata changes)
24
+ - `CLAUDE.md` Current Phase Status section (stuck at v3.7.4)
25
+
26
+ This is the **6th instance** of the instance-fix-not-class-fix recursion class (after K-1 instances, v3.7.3 K-1 invariant negative-control, v3.7.4 github-metadata negative-control). The lesson keeps recurring: when a positioning/calibration touches one surface, the entire class of positioning surfaces needs the same touch in the same commit.
27
+
28
+ ### Fixed — OpenClaw permeation across 3 docs surfaces
29
+
30
+ - `docs/QUICKSTART.md:12` agent list — OpenClaw added
31
+ - `docs/QUICKSTART.md:18` MCP client list — OpenClaw added
32
+ - `docs/api.md:3` lead paragraph — "the most advanced Obsidian MCP" credential added + OpenClaw added to agent list
33
+
34
+ ### Fixed — github-metadata-invariant test drift
35
+
36
+ The invariant test caught GitHub metadata drift since v3.7.0 but its OWN constants drifted across positioning changes:
37
+
38
+ - `REQUIRED_TOPICS`: dropped `context-engineering` (no longer in Topics since v3.7.8), added `openclaw` (restored in Topics in v3.7.8). Now matches the actual Topics list.
39
+ - `ABOUT_LEADS_WITH`: updated from `/^Memory layer for AI agents/i` to `/^The most advanced Obsidian MCP/i` (matches v3.7.8 About copy).
40
+ - Negative-control test cases updated to verify the new canonical phrase: positive cases include "The most advanced Obsidian MCP — long-term memory for AI agents"; negative cases include the v3.7.0-v3.7.7 phrasing ("Memory layer for AI agents...", "Long-term memory for AI agents") which is now WRONG against the v3.7.8 About.
41
+
42
+ The negative-control proves the analyzer correctly distinguishes old vs new canonical phrasing — the v3.7.4 negative-control infrastructure pays dividends here.
43
+
44
+ ### Changed — CLAUDE.md Current Phase Status section
45
+
46
+ Updated from v3.7.4 (4 releases stale) through v3.7.9. Now documents the full v3.7.5 → v3.7.9 arc: external audit response, ship-ready batch, visual refresh, positioning calibration, permeation completion.
47
+
48
+ ### Tests
49
+
50
+ **786 tests** — unchanged. No code paths touched, no test additions/removals, no coverage delta. The invariant constants change is a CONFIG update, not a new test.
51
+
52
+ Lint clean · `tsc` strict + `noUncheckedIndexedAccess` clean · version-consistency green at `3.7.9` (5 surfaces) · all K-1 invariants green · github-metadata invariant now correctly tracks v3.7.8 metadata.
53
+
54
+ ### Migration
55
+
56
+ **No-op for every consumer.** Zero code/API/behavior/schema changes. Same npm install, same wire format. Visible surfaces:
57
+ - GitHub repo metadata — already in v3.7.8 state
58
+ - README — already in v3.7.8 state
59
+ - `docs/QUICKSTART.md` + `docs/api.md` — now match v3.7.8 positioning (instantly after merge)
60
+
61
+ ### Method note — the instance-fix-not-class-fix recursion now has its 6th instance
62
+
63
+ The instance-fix-not-class-fix bug has now recurred at the methodology-recursion level **6 times** across the v3.6.x → v3.7.x cascade:
64
+ 1. K-1 instances (v3.6.1 1/10, v3.6.2 4/10, v3.6.4 10/10)
65
+ 2. K-1 invariant chain (v3.6.4 grep → v3.7.0 AST → v3.7.4 caller-pattern)
66
+ 3. K-1 invariant negative-control (v3.7.3 fixed k1-version-stamp instance, v3.7.4 caught github-metadata instance)
67
+ 4. Reranker count gate (v3.7.4)
68
+ 5. External-audit K-1/K-2 sibling class (v3.7.5)
69
+ 6. **Positioning surface class** (v3.7.8 instance fix, v3.7.9 class propagation — THIS)
70
+
71
+ The pattern: every time I think a class is closed, the NEXT iteration finds another surface where the class still applies. The terminator would be a **"positioning consistency invariant test"** that scans all positioning surfaces (README, package.json description, docs/*.md leads, GitHub About via gh api) for the SAME canonical phrasing — but that's v3.8+ scope (requires defining what "positioning surfaces" means and how to extract their lead text).
72
+
73
+ For now: v3.7.9 closes the v3.7.8 class manually. If round-12 finds another positioning surface, that's the signal to ship the invariant.
74
+
75
+ ---
76
+
77
+ ## [3.7.8] — 2026-05-16
78
+
79
+ > **TL;DR:** Repo-page positioning patch. Restores **"The most advanced Obsidian MCP"** as the primary credential in the README hero (previously demoted to a secondary line in v3.6.3's "memory for AI agents" pivot, then dropped entirely in v3.7.7's visual refresh). Adds **OpenClaw** to all agent-list mentions (README hero, "What it is", Use cases, comparison matrix, npm description, image alt text). GitHub About description + Topics updated out-of-band via `gh api`: About now leads with "The most advanced Obsidian MCP — long-term memory for AI agents...", Topics list `openclaw` (dropped `context-engineering` from the 20-cap as the least-discoverable hype keyword). **Zero code changes.** 786 tests unchanged.
80
+
81
+ **Patch — positioning restoration + OpenClaw discoverability.**
82
+
83
+ ### Changed — README hero (most-advanced credential restored)
84
+
85
+ The v3.6.3 marketing pivot moved "The most advanced Obsidian MCP" from the primary headline to a secondary bold line ("Long-term memory for AI agents." became the lead). The v3.7.7 visual refresh dropped the secondary line entirely in favor of the pain-point hook ("Stop re-explaining context..."). **v3.7.8 restores the credential to the H3 subtitle** so visitors immediately see both positioning facets:
86
+
87
+ ```
88
+ ### The most advanced Obsidian MCP. Long-term memory for AI agents.
89
+ ```
90
+
91
+ The bold pain-point hook below stays, so the structure is now: **credential + value prop** (H3) → **pain point + outcome** (bold).
92
+
93
+ ### Added — OpenClaw to all agent surfaces
94
+
95
+ OpenClaw is a primary MCP client (reference deployment partner; see v3.5.x CHANGELOG for the SZBOX trading-system pairing). v3.6.3's Topics rebalance dropped `openclaw` to fit the 8 new hype keywords inside GitHub's 20-cap, but the README + npm description references also got trimmed. v3.7.8 restores OpenClaw discoverability:
96
+
97
+ - **README** — added to 5 agent-list mentions: image alt text, hero bold line, "What it is" lead paragraph, Use case #1, comparison matrix "MCP-native" row.
98
+ - **`package.json#description`** — agent list now reads "Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, OpenClaw, and any MCP client". Also: the description NOW LEADS with "The most advanced Obsidian MCP — long-term memory for AI agents." (matching the GitHub About).
99
+ - **GitHub About** (out-of-band via `gh api`): replaced with `"The most advanced Obsidian MCP — long-term memory for AI agents. Hybrid retrieval (BM25 + ML + BGE rerank, RRF-fused), HNSW + int8 quantization, agentic RAG (HyDE + sub-question), standalone Bases, PDFs+OCR. For Claude Code/Desktop, Cursor, ChatGPT, Codex, OpenClaw. MCP-native, MIT, SLSA-3."` (288 chars, fits the 350 limit).
100
+ - **GitHub Topics** (out-of-band via `gh api`): swapped `context-engineering` → `openclaw`. New 20-topic set: `obsidian, obsidian-mcp, mcp-server, model-context-protocol, claude, claude-code, cursor, chatgpt, codex, openclaw, rag, agentic-rag, hybrid-search, semantic-search, ai-memory, agent-memory, llm-memory, long-term-memory, claude-memory, second-brain`.
101
+
102
+ `context-engineering` was the safest drop from the 20-cap: it's the most jargon-heavy of the agent-memory keywords (low natural-search volume vs `ai-memory`, `agent-memory`, `llm-memory`, `long-term-memory`, `claude-memory` which it overlaps with). `openclaw` brings unique discoverability for the dedicated client community.
103
+
104
+ ### Tests
105
+
106
+ **786 tests** — unchanged. No code paths touched, no test additions, no coverage delta. Lint clean, `tsc` strict + `noUncheckedIndexedAccess` clean, version-consistency green at `3.7.8` (5 surfaces), all K-1 invariants green.
107
+
108
+ ### Migration
109
+
110
+ **No-op for every consumer.** Zero code/API/behavior/schema changes. Same npm install, same wire format. Visible surfaces:
111
+ - GitHub About + Topics — updated instantly (out-of-band, already live)
112
+ - README — instantly after merge
113
+ - npm description — after `npm publish`
114
+
115
+ OpenClaw users specifically benefit: the repo is now discoverable via the `openclaw` topic + README references → easier for the OpenClaw community to find the recommended Obsidian memory backend.
116
+
117
+ ### Method note
118
+
119
+ Positioning continues to be a calibration exercise (per v3.6.3 method note: *"positioning isn't a one-time launch decision — it's continuous calibration"*). The "most advanced Obsidian MCP" credential and the "memory for AI agents" value-prop are **complementary**, not mutually-exclusive: this patch restores the both-and framing rather than the v3.7.7 either-or compromise. OpenClaw discoverability is a smaller-but-similar calibration — the v3.6.3 rebalance traded it for general-hype keywords; v3.7.8 trades back one of those (the least-discoverable one) to restore the dedicated-community pathway.
120
+
121
+ ---
122
+
5
123
  ## [3.7.7] — 2026-05-16
6
124
 
7
125
  > **TL;DR:** Visual + marketing refresh. New `assets/social-preview.png` leads with the emotional value prop ("Long-term memory for AI agents") and a visual flow showing vault → enquire-mcp → 5 AI agents — replaces the previous engineering-stats-heavy preview. README hero rewritten with **"The problem / The solution"** framing + sticky nav links + a clear 3-bullet differentiation block. **Zero code changes.** 786 tests unchanged. The visual + copy hierarchy is now optimized for first-time visitor conversion (3-second value-prop comprehension); technical depth is preserved but moved below the fold.
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  <div align="center">
2
2
 
3
- <a href="https://github.com/oomkapwn/enquire-mcp"><img src="./assets/social-preview.png" alt="enquire-mcp — long-term memory for AI agents. Built on your Obsidian vault. Open-source, MCP-native, vendor-neutral. Hybrid retrieval, BGE reranker, HNSW, PDFs with OCR. For Claude Code, Claude Desktop, Cursor, ChatGPT, Codex." width="100%"></a>
3
+ <a href="https://github.com/oomkapwn/enquire-mcp"><img src="./assets/social-preview.png" alt="enquire-mcp — the most advanced Obsidian MCP. Long-term memory for AI agents. Built on your Obsidian vault. Open-source, MCP-native, vendor-neutral. Hybrid retrieval, BGE reranker, HNSW, PDFs with OCR. For Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw." width="100%"></a>
4
4
 
5
5
  # enquire-mcp
6
6
 
7
- ### Long-term memory for AI agents. Built on your Obsidian vault.
7
+ ### The most advanced Obsidian MCP. Long-term memory for AI agents.
8
8
 
9
- **Stop re-explaining context to Claude, Cursor, ChatGPT every session. Your Obsidian notes become shared, searchable memory across every MCP-compatible agent — your knowledge, every model, forever yours.**
9
+ **Stop re-explaining context to Claude, Cursor, ChatGPT, Codex, OpenClaw every session. Your Obsidian notes become shared, searchable memory across every MCP-compatible agent — your knowledge, every model, forever yours.**
10
10
 
11
11
  [![CI](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml)
12
12
  [![npm](https://img.shields.io/npm/v/@oomkapwn/enquire-mcp.svg?label=npm&color=cb3837)](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
@@ -29,7 +29,7 @@ Every AI session starts from zero. You re-explain your project, your design deci
29
29
 
30
30
  ## The solution
31
31
 
32
- Your Obsidian vault becomes **persistent, queryable long-term memory** for any MCP-compatible agent. One install — your knowledge is instantly accessible from Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, and every other MCP client. Plain markdown files **you own**, indexed locally, searched with the full modern IR stack, recalled across every session and every model.
32
+ Your Obsidian vault becomes **persistent, queryable long-term memory** for any MCP-compatible agent. One install — your knowledge is instantly accessible from Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, OpenClaw, and every other MCP client. Plain markdown files **you own**, indexed locally, searched with the full modern IR stack, recalled across every session and every model.
33
33
 
34
34
  > **Three things make enquire-mcp different**:
35
35
  > 1. **Vendor-neutral.** Your memory lives in `.md` files. Switch from Claude to Cursor — your memory comes with you.
@@ -74,7 +74,7 @@ enquire-mcp doctor --vault <path> # color-coded ✓/⚠/✗ health check
74
74
 
75
75
  ## 🧠 Use cases
76
76
 
77
- **1 — Long-term memory for AI agents.** Drop your Obsidian vault into any MCP-compatible agent (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex). The agent now has durable, semantic recall over every meeting note, journal entry, research log, and decision doc you've ever written — across sessions, models, and providers. Unlike `Claude Memory` or `ChatGPT Memory`, your knowledge isn't locked into one vendor's cloud; it lives in plain markdown you own and can migrate freely.
77
+ **1 — Long-term memory for AI agents.** Drop your Obsidian vault into any MCP-compatible agent (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw). The agent now has durable, semantic recall over every meeting note, journal entry, research log, and decision doc you've ever written — across sessions, models, and providers. Unlike `Claude Memory` or `ChatGPT Memory`, your knowledge isn't locked into one vendor's cloud; it lives in plain markdown you own and can migrate freely.
78
78
 
79
79
  **2 — Personal knowledge base / second brain.** Hybrid retrieval surfaces the right note for *any* phrasing, in any of 50+ languages. Ask in English about a Russian-language journal entry from 2 years ago, get the right hit. Wikilink graph-boost reranks notes that sit at the centre of your knowledge graph. GraphRAG-light surfaces topical communities — discover connections you forgot you made. PDFs blend into search with `[page: N]` citations so research papers and meeting transcripts become first-class memory.
80
80
 
@@ -106,7 +106,7 @@ Auto-generated **[API reference at oomkapwn.github.io/enquire-mcp](https://oomka
106
106
  | **Built-in retrieval-quality eval harness** (NDCG, Recall, MRR, A/B matrix) | ✅ | ❌ | ❌ |
107
107
  | **Remote MCP** over HTTP + bearer auth + stateful sessions | ✅ | ❌ | partial |
108
108
  | **Per-signal observability** per hit | ✅ | ❌ | ❌ |
109
- | **MCP-native** (Claude · Cursor · ChatGPT · Codex · any client) | ✅ | ❌ Obsidian-only | varies |
109
+ | **MCP-native** (Claude · Cursor · ChatGPT · Codex · OpenClaw · any client) | ✅ | ❌ Obsidian-only | varies |
110
110
  | **Privacy filter** verified at every search + write path | ✅ | n/a | ❌ |
111
111
  | **44 production tools** (33 always-on read tools + 4 opt-in + 7 gated writes) | ✅ | n/a | varies |
112
112
  | **GraphRAG-light** (wikilink community detection via Louvain modularity) | ✅ **only here** | ❌ | ❌ |
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * + `McpServer({version})`) and `src/tool-registry.ts` (used in the
8
8
  * `vault-info` resource payload).
9
9
  */
10
- export declare const VERSION = "3.7.7";
10
+ export declare const VERSION = "3.7.9";
11
11
  export { main } from "./cli.js";
12
12
  export { buildEmbedText, buildMcpServer, formatReadyBanner, prepareServerDeps, type ServeOptions, type ServerDeps, startServer } from "./server.js";
13
13
  export { parsePositiveInt, parseQuantizationMode } from "./tool-registry.js";
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ import { main } from "./cli.js";
32
32
  * + `McpServer({version})`) and `src/tool-registry.ts` (used in the
33
33
  * `vault-info` resource payload).
34
34
  */
35
- export const VERSION = "3.7.7";
35
+ export const VERSION = "3.7.9";
36
36
  // Re-exports — preserve the v3.5.x public surface so http-transport.ts and
37
37
  // tests don't need to know about the new module layout. The set below
38
38
  // exactly matches the v3.5.x `export` declarations: `main`,
@@ -9,13 +9,13 @@ From `npm install` to a working **long-term memory layer for your AI agents**, b
9
9
  - **Hybrid search** across every `.md` in your vault — BM25 + TF-IDF fused via Reciprocal Rank Fusion (Cormack et al, 2009), so keyword hits *and* related-term hits both surface.
10
10
  - **Top-K ranked notes with snippets** — each result returns the matching note path, a ~120-char snippet around the hit, and per-signal scores so you see why it ranked.
11
11
  - **No Obsidian app required** — any directory with `.md` files works. Obsidian doesn't even need to be installed.
12
- - **Works in every MCP client** — Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT, Codex, mobile MCP clients. One server, one config snippet per client.
12
+ - **Works in every MCP client** — Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT, Codex, OpenClaw, mobile MCP clients. One server, one config snippet per client.
13
13
 
14
14
  ## Prerequisites
15
15
 
16
16
  - **Node 22.13+ recommended** (or 20+ for non-PDF use cases — `node --version` should print `v22.13` or higher to enable PDF indexing via `pdfjs-dist@5.7+`; on Node 20 you get the full MCP server minus PDF features). CI matrix tests Node 22 + 24.
17
17
  - **An Obsidian vault folder** — any directory containing `.md` files. If you don't have one, `mkdir ~/TestVault && echo "# Hello" > ~/TestVault/note.md` is enough to follow this guide.
18
- - **An MCP client** — one of: Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT (with remote MCP), Codex, or any other MCP-compatible client.
18
+ - **An MCP client** — one of: Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT (with remote MCP), Codex, OpenClaw, or any other MCP-compatible client.
19
19
 
20
20
  ## Step 1 — Install (15 seconds)
21
21
 
package/docs/api.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # enquire — API
2
2
 
3
- **enquire is a long-term memory layer for AI agents, built on your Obsidian vault.** Open-source, MCP-native, vendor-neutral persistence: agents (Claude Code / Claude Desktop / Cursor / ChatGPT / Codex / any MCP client) get durable, queryable recall across sessions, models, and providers — your knowledge lives in plain markdown you own, not a vendor cloud. 44 MCP tools (33 always-on read + 4 opt-in read + 7 opt-in write); the 4 opt-ins are: 1 via `--persistent-index` + `--diagnostic-search-tools` (`obsidian_full_text_search` — needs BOTH flags: persistent-index for the FTS5 index, diagnostic-search-tools to surface it as a single-ranker tool alongside the hybrid default `obsidian_search`) + 3 via `--diagnostic-search-tools` (the single-ranker `obsidian_search_text` / `obsidian_semantic_search` / `obsidian_embeddings_search` — gated by default in v2.0+ since `obsidian_search` auto-detects + fuses signals). 2 + 1 opt-in MCP resources, 19 MCP prompts. **v3.1.0+ adds `obsidian_hyde_search`** (HyDE-augmented retrieval, Gao et al 2023; agent supplies a synthetic answer, server embeds it for retrieval) plus the `vault_research` (sub-question decomposition) and `vault_synthesis_page` (Karpathy LLM-Wiki synthesis loop) prompts. v2.6.0+ also speaks Streamable HTTP via `serve-http` (bearer auth + rate-limit + CORS). v2.7.0+ indexes PDFs as a separate read tool surface; **v2.8.0+ blends PDF chunks into `obsidian_search` hybrid retrieval** with `--include-pdfs` — every hit carries a `kind: "md" | "pdf"` flag and PDF snippets include `[page: N]` markers for citation. **v2.9.0+ adds BGE cross-encoder reranking** on top of RRF with `--enable-reranker` — typical +5-10 NDCG@10 retrieval-quality boost. **v2.10.0+ adds Tesseract OCR for image-only / scanned PDFs** via `obsidian_ocr_pdf` — completes the PDF retrieval story.
3
+ **enquire is the most advanced Obsidian MCP — a long-term memory layer for AI agents, built on your Obsidian vault.** Open-source, MCP-native, vendor-neutral persistence: agents (Claude Code / Claude Desktop / Cursor / ChatGPT / Codex / OpenClaw / any MCP client) get durable, queryable recall across sessions, models, and providers — your knowledge lives in plain markdown you own, not a vendor cloud. 44 MCP tools (33 always-on read + 4 opt-in read + 7 opt-in write); the 4 opt-ins are: 1 via `--persistent-index` + `--diagnostic-search-tools` (`obsidian_full_text_search` — needs BOTH flags: persistent-index for the FTS5 index, diagnostic-search-tools to surface it as a single-ranker tool alongside the hybrid default `obsidian_search`) + 3 via `--diagnostic-search-tools` (the single-ranker `obsidian_search_text` / `obsidian_semantic_search` / `obsidian_embeddings_search` — gated by default in v2.0+ since `obsidian_search` auto-detects + fuses signals). 2 + 1 opt-in MCP resources, 19 MCP prompts. **v3.1.0+ adds `obsidian_hyde_search`** (HyDE-augmented retrieval, Gao et al 2023; agent supplies a synthetic answer, server embeds it for retrieval) plus the `vault_research` (sub-question decomposition) and `vault_synthesis_page` (Karpathy LLM-Wiki synthesis loop) prompts. v2.6.0+ also speaks Streamable HTTP via `serve-http` (bearer auth + rate-limit + CORS). v2.7.0+ indexes PDFs as a separate read tool surface; **v2.8.0+ blends PDF chunks into `obsidian_search` hybrid retrieval** with `--include-pdfs` — every hit carries a `kind: "md" | "pdf"` flag and PDF snippets include `[page: N]` markers for citation. **v2.9.0+ adds BGE cross-encoder reranking** on top of RRF with `--enable-reranker` — typical +5-10 NDCG@10 retrieval-quality boost. **v2.10.0+ adds Tesseract OCR for image-only / scanned PDFs** via `obsidian_ocr_pdf` — completes the PDF retrieval story.
4
4
 
5
5
  > **Channels:** stable v3.7.x (`@latest` on npm) ships 44 tools including `obsidian_search` (hybrid BM25 + TF-IDF + ML embeddings, RRF-fused) with optional BGE cross-encoder reranking, `obsidian_embeddings_search`, `obsidian_hyde_search`, plus the `install-model` / `build-embeddings` / `clear-embeddings` / `setup` / `doctor` / `eval` / `bench` subcommands. The `@rc` dist-tag carries the most recent release candidate. This document covers the **v3.7.x stable** surface — see [CHANGELOG.md](../CHANGELOG.md) for the v3.7.0 quality batch that closed the post-v3.6.4 audit cycle (K-1 class structurally enforced at 4 levels, ~20× faster search hot path via peek caching, per-file branch coverage floors, GitHub repo metadata invariant).
6
6
 
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@oomkapwn/enquire-mcp",
4
- "version": "3.7.7",
5
- "description": "Memory layer for AI agents over your Obsidian vault. Hybrid retrieval (BM25 + TF-IDF + multilingual ML embeddings, RRF-fused) with BGE cross-encoder reranking, HNSW + int8 quantization, late-chunking, HyDE + sub-question decomposition, agentic RAG, PDFs (with OCR), standalone Bases (.base query execution — no Obsidian needed), GraphRAG-light (Louvain wikilink community detection), wikilinks, backlinks, Dataview, frontmatter, canvas. Open-source long-term memory / second brain for Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, and any MCP client. 44 tools, 19 MCP prompts, 5 cross-encoder reranker models, 786 tests, SLSA-3, semver-bound, MIT.",
4
+ "version": "3.7.9",
5
+ "description": "The most advanced Obsidian MCP long-term memory for AI agents. Hybrid retrieval (BM25 + TF-IDF + multilingual ML embeddings, RRF-fused) with BGE cross-encoder reranking, HNSW + int8 quantization, late-chunking, HyDE + sub-question decomposition, agentic RAG, PDFs (with OCR), standalone Bases (.base query execution — no Obsidian needed), GraphRAG-light (Louvain wikilink community detection), wikilinks, backlinks, Dataview, frontmatter, canvas. Open-source long-term memory / second brain for Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, OpenClaw, and any MCP client. 44 tools, 19 MCP prompts, 5 cross-encoder reranker models, 786 tests, SLSA-3, semver-bound, MIT.",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "enquire-mcp": "dist/index.js"