v8.2.0 — Register a tool budget, not a server
v8.1.0 decided which servers a machine pays for. This one decides how much of each.
Hermes filters at the tool level, and nothing was using it
The assumption going in was that Hermes is the hardest provider to control, because its MCP servers are not togglable the way Codex's are. That is backwards — tools/mcp_tool.py:
tools.include — whitelist: only matching tool names are registered
tools.exclude — blacklist: all tools EXCEPT matching ones are registered
entries may be exact names or fnmatch globs
Enforced at tool registration, on both the live-discovery and schema-cache paths, so a filtered tool's schema never reaches the model. Claude, Codex, Grok and Kimi can only toggle whole servers. Hermes is the most controllable provider in the pack — and the one where it matters most, because BYOK bills every turn.
houseCARL, by the tool
45 tools, 167,072 bytes, ~41,768 tokens on every turn — about 21% of a 200k window gone before the first user message. Schema size is wildly uneven, which is the whole opportunity:
housecarl_bulk_create 14,655 bytes
housecarl_create_record 14,548
housecarl_bulk_apply 12,393 → 41,596 between them: 25% of the server,
... and more than the whole of Skyrim Forge
housecarl_bsa_list 856
Three named sets now ship in CATALOG.json with their measurements:
| set | tools | tokens/turn | saving |
|---|---|---|---|
Full |
45 | ~41,768 | — |
Lean (default) |
42 | ~31,369 | 25% |
ReadOnly |
27 | ~17,604 | 58% |
TOOLS\Migrate-HermesProfiles.ps1 -SkyrimToolset ReadOnly -Apply
hermes -p skyrim mcp configure housecarl # or pick by handLean excludes and ReadOnly includes, deliberately: an upstream update should add new tools to Lean, and must never be able to add a write tool to a set whose promise is that nothing writes.
The filter is yours, not the installer's
hermes mcp configure writes tools.include by hand. The migrator fills that field when absent and never overwrites it — the same rule connect_timeout already had. -SkyrimToolset passed explicitly overrides.
The doctor prints the bill, and refuses to invent one
A tool filter was invisible in every existing view: hermes mcp test reports what the server advertises, not what Hermes registers.
==> Hermes profile tool budgets
OK skyrim housecarl 42/45 tools ~31369 tok/turn [Lean] full is ~41768, saving ~10399
The first cut of that line averaged schema bytes across tools and reported ~38,983 for a set that measures 31,369 — a 3.7× error in the saving, in the format of a real measurement. It reports the recorded per-set figure now, and prints cost unmeasured for a hand-picked selection.
Also fixed
-SkyrimToolset Fullreported "already matches" while the previous filter was still installed. Found by running the round trip Lean → Full → ReadOnly → Lean on a live config, not by reading the code.- 167,118 vs 167,072 were both in flight for one measurement (46 bytes of JSON array framing), in the release built to stop restated numbers drifting. Reconciled to one basis with a cross-source contract.
What this does not fix
The dollar saving is smaller than list price implies — tool schemas sit in the cached prompt prefix. The context-window saving is unconditional: ~10,399 tokens back on Lean, ~24,164 on ReadOnly, every turn, cached or not.
Verified on 18b74a1: 18/18 checks green, 70/70 release contracts under both runners, pack gate PASS, provider-detection gate PASS, hermes bootstrap 5/5, MANIFEST 4419 files / 0 mismatch, installer exit 0 with doctor PASS reporting the Lean budget.
Full detail: docs/history/V8.2.0-CHANGELOG.md