Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:ky51wt3erj was degraded 74 minutes today: trevato/forge: "tools/list stays under 40 KB, with 3 KB of headroom (37,000 bytes)" failed on 3 pulls in the last hour … #5185
Check · Review · Land · Live done — Landed and live in production.
The MCP `tools/list` budget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fit `threads`. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.
shipped production is serving it deploy f9c1fcc
The MCP tools/list budget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fit threads. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.
src/http/mcp.ts: 71 tool descriptions are cut to one sentence each. No name, schema,requiredlist or behaviour changed. Argument names stay in backticks. Safety notes stay, such as asks_act's "ship (never undone)" and claim_link's "only withreveal: true". Phrases other tests match on also stay ("invite lets in only…", "saved filter").test/mcp-size.test.ts: the headroom limit is 37,000 again, matching the test name the sentinel tracks. A new assertion holds every tool description to 120 bytes. Onmainit fails onsignup(141 bytes).- Why #5119 closed: its check failed on "a sleeping preview woken at the limit". The check log shows the machine ran out of disk (
ENOSPC: no space left on deviceatsrc/kernel/db.ts:50, opening a test database). All 23 failures in that run trace to this, and none of them involve MCP. The head is unchanged (a225c3d0) and is being checked again in this pull. - Not done: the sentinel suggested making the test's result independent of the machine. That doesn't apply here: the size test gives the same answer on every run, because it is red only when the budget is used up. I also left the timing test alone, since its failure was the full disk, not its 2.5 s sleep window.
- Things to look at:
signupno longer says "Withmode, plans."; its schema still hasdryRun.asksandfeedsay "saved filter" in lowercase becausetest/asks-mute.test.tsmatches it.
To try it: bun test test/mcp-size.test.ts passes, and the type check is clean.
🤖 Generated with Claude Code
Approved. The change only edits text: 71 tool descriptions are shorter, and test/mcp-size.test.ts sets the headroom back to 37,000 and adds a 120-byte limit on each description. No tool name, schema, required list, writes, dryByDefault, adminOnly or run body changed, so no authorization or behaviour changed.
What I checked:
- The safety notes are still there:
ship (never undone),only with \reveal: true\`,deletes nothing,read-only` on probe, and the admin, writer and owner gates named in the text. - The new
max 500onaccessis true (READ_MAX = 500in src/http/access_log.ts). - At head a225c3d0, these tests pass: mcp-size, asks-mute (which matches "saved filter"), decisions-by-doors, mcp-confirm-wait, mcp-secrets and mcp-pulls.
- The preview
/answers 200. - The new per-description assertion would fail on main (
signupis 141 bytes there), so it guards something real.
One low, non-blocking point is on the line below.
The full gate on land was red; the pull is open again. Red tests:
- the drain page > a page held back by the hourly cap is sent once the window rolls over
- the drain page > a page held back by the hourly cap is sent once the window rolls over [25.57ms] [shard 785]
The MCP
tools/listbudget is back to an honest headroom of 37,000 bytes, which was the issue's goal. The answer is now 35,774 bytes for a forge admin (it was 36,859), which leaves 1,226 bytes for the next tool. #4990 had raised the limit to 37,500 to fitthreads. Each raise like that leaves the next tool pull red, and that is how this lane stayed degraded.src/http/mcp.ts: 71 tool descriptions are cut to one sentence each. No name, schema,requiredlist or behaviour changed. Argument names stay in backticks. Safety notes stay, such as asks_act's "ship (never undone)" and claim_link's "only withreveal: true". Phrases other tests match on also stay ("invite lets in only…", "saved filter").test/mcp-size.test.ts: the headroom limit is 37,000 again, matching the test name the sentinel tracks. A new assertion holds every tool description to 120 bytes. Onmainit fails onsignup(141 bytes).ENOSPC: no space left on deviceatsrc/kernel/db.ts:50, opening a test database). All 23 failures in that run trace to this, and none of them involve MCP. The head is unchanged (a225c3d0) and is being checked again in this pull.signupno longer says "Withmode, plans."; its schema still hasdryRun.asksandfeedsay "saved filter" in lowercase becausetest/asks-mute.test.tsmatches it.To try it:
bun test test/mcp-size.test.tspasses, and the type check is clean.🤖 Generated with Claude Code
Closes #5105