You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: Reword tool search warnings to target clients, not Claude models (#2077)
* fix: Reword tool search warnings to target clients, not Claude models
The enable_tool_search warnings blamed Sonnet/Opus models for a conflict
that belongs to clients with built-in deferred tool search (claude.ai,
Claude Desktop, Claude Code). Deferred tools are a client feature, not a
model feature: clients that inline all tool schemas (e.g. GitHub Copilot
CLI) benefit from ha-mcp's tool search regardless of model. Claude
clients should keep using their built-in tool search instead of ha-mcp's.
Updated on every surface carrying the warning: settings UI locales (all
languages), both add-on flavors' translations and DOCS.md, README, and
the locale source baseline.
Closes#2059
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: Update settings.js fallback copy of the tool search warning
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: Drop the exact full-catalog token figure from tool search help
The ~46K number drifts as the catalog grows; state the reduction as a
percentage and keep only the post-enable idle figure.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: Frame deferred-tools guidance around the client/model combination
The absolute 'client feature, not a model feature' claim contradicted the
model-based examples beside it (Codex review). The deciding question is
whether the current client/model combination loads the full catalog up
front.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: kingpanther13 <kingpanther13@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -324,9 +324,9 @@ Skills can still be installed manually for clients that prefer local skill files
324
324
325
325
## 🔍 Tool Discovery for AI Agents
326
326
327
-
By default, the full tool catalog (~84 tools) is listed to the client through the standard MCP `tools/list` response. Clients with deferred / on-demand tool loading (Claude Sonnet, Claude Opus) handle that fine — tools are pulled into context only when needed, so idle context cost is near-zero.
327
+
By default, the full tool catalog (~84 tools) is listed to the client through the standard MCP `tools/list` response. Clients with deferred / on-demand tool loading (claude.ai, Claude Desktop, Claude Code) handle that fine — tools are pulled into context only when needed, so idle context cost is near-zero.
328
328
329
-
For models*without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing the full tool catalog up front adds a lot of idle context and can overwhelm smaller models. To address that, the server ships with a **search-based discovery mode** built on top of FastMCP's BM25 search transform.
329
+
For setups*without* deferred tool support — models like Claude Haiku, Gemini, OpenAI-compatible local models and smaller open-weights models, or clients that inline all tool schemas regardless of model (e.g. GitHub Copilot CLI) — listing the full tool catalog up front adds a lot of idle context and can overwhelm smaller models. To address that, the server ships with a **search-based discovery mode** built on top of FastMCP's BM25 search transform.
330
330
331
331
### Smaller or local LLMs (Ollama, etc.)
332
332
@@ -356,11 +356,11 @@ The proxy split lets MCP clients apply different permission policies per categor
356
356
357
357
### When to enable
358
358
359
-
-**Claude Haiku, OpenAI-compatible local models, Gemini, ChatGPT or any model without native deferred tool support** — large idle-context savings.
359
+
-**Claude Haiku, OpenAI-compatible local models, Gemini, or any model without native deferred tool support** — large idle-context savings. The same applies to clients that inline all tool schemas regardless of model (e.g. GitHub Copilot CLI, even when running Claude Sonnet/Opus).
360
360
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of 84.
361
361
-**Cost-sensitive deployments** — fewer idle tokens per turn.
362
362
363
-
Leave it off when using Claude Sonnet/Opus or any client with deferred tool loading; the full catalog has no idle cost there and direct calls skip the search step. If you choose to use our toolsearch then you should disable the native Claude Opus/Sonnet toolsearch, which is called deferred tools in the settings.
363
+
Leave it off in clients with deferred tool loading (claude.ai, Claude Desktop, Claude Code); the full catalog has no idle cost there, direct calls skip the search step, and the client's built-in tool search is the better choice — there is no benefit to running ha-mcp's on top of it. Whether tools are deferred depends on the client and model combination: the same model can behave differently per client — GitHub Copilot CLI running Claude Sonnet/Opus inlines the full catalog and still benefits from tool search here. Some Codex models and ChatGPT include deferred tools too — check your client/model directly to confirm its features so you don't leave this enabled unnecessarily.
364
364
365
365
> 🔄 **Refresh your client's tool list after changing this (or any) setting.** Toggling `ENABLE_TOOL_SEARCH` (or changing pinned/disabled tools, Read Only Mode, etc.) changes the tools the server exposes, but your AI client keeps serving its **cached** tool list until it re-fetches. Restarting the add-on or Home Assistant does **not** refresh the client — reconnect or refresh the MCP server in your client (e.g. re-add/refresh the connector in ChatGPT, or close and reopen Claude Desktop). If you skip this, newly enabled tools won't appear in the client at all, and tools the server no longer exposes still show as available but return `Unknown tool` when called. ChatGPT sometimes keeps serving the stale list even after the connector is removed and re-added under the same name — if tools are still missing after re-adding, delete the connector and create a new one with a **different name**.
|`enable_tool_search`| Replace full tool catalog with search-based discovery (~46K →~5K tokens). ⚠️ Do NOT enable for Claude Sonnet/Opus — their built-in tool search conflicts with ha-mcp's. Disable one or the other. |`false`|
17
+
|`enable_tool_search`| Replace full tool catalog with search-based discovery (cuts idle context by ~90%, to~5K tokens). ⚠️ Do NOT enable in clients with built-in tool search / deferred tools (claude.ai, Claude Desktop, Claude Code) — the layers conflict; use the client's built-in search instead. |`false`|
18
18
|`enable_tool_security_policies`| Gate high-stakes tool calls (lock/alarm control, automation writes, etc.) behind user approval. Guarded calls block until the user clicks Approve in the Tool Security Policies tab of the web UI. Per-tool rules with optional argument conditions are configured in that same tab. |`false`|
19
19
|`read_only_mode`| Toggles all write tools off, and removes ability for tools to make any write or destructive calls. Mixed read/write tools (backups, add-ons, energy preferences, voice pipelines, and code mode when enabled) stay available with their write operations blocked. Same toggle as the web UI Tools tab. |`false`|
20
20
|`enable_beta_features`*(master)*| Master gate for the beta sub-flags below. Sub-flags are ignored at runtime while this is off — even when explicitly set to true. Mirrored to the web settings UI under "Beta features (dangerous)". |`true`|
0 commit comments