From 1518fc7a436ff8fcb6a4a21e8e6fbe33e86d0549 Mon Sep 17 00:00:00 2001 From: Brian Newman Date: Wed, 18 Mar 2026 14:09:05 -0700 Subject: [PATCH] fix: use exact match for mcporter tool capability validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit actualTools.some(a => a.includes(t)) is a substring check — 'vector_search'.includes('search') === true, so a missing 'search' tool would be silently masked by 'vector_search' existing. Switch to actualTools.includes(t) for strict equality per element. --- src/memory/qmd-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memory/qmd-manager.ts b/src/memory/qmd-manager.ts index 7f8bc22b45b..05a5967d65e 100644 --- a/src/memory/qmd-manager.ts +++ b/src/memory/qmd-manager.ts @@ -1247,7 +1247,7 @@ export class QmdMemoryManager implements MemorySearchManager { .split("\n") .map((l) => l.trim()) .filter(Boolean); - const missing = expectedTools.filter((t) => !actualTools.some((a) => a.includes(t))); + const missing = expectedTools.filter((t) => !actualTools.includes(t)); if (missing.length > 0) { log.warn( `mcporter bridge tool mismatch for server "${mcporter.serverName}": ` +