Oversized tool results come from the MCP servers now, not from the harness #1132

Open
opened 2026-08-23 01:19:40 +00:00 by coilyco-ops · 1 comment
Member

Split out of #940. Its first acceptance criterion, no single tool result above 32KB before bounding, is not met, and every remaining offender belongs to an MCP server rather than to this repository.

Measured

Maximum mcp.tool.result_bytes by tool over seven days, oversized only. The two this repository owns are excluded because they are fixed: scratch_search in 3f3d528, confirmed dropping from 761KB to 281 bytes across the days it landed, and scratch_read in #1113.

tool max bytes server
browser_take_screenshot 1,232,455 playwright
get_author_feed 187,649 bluesky
signoz_search_traces 130,997 signoz
search_species 116,404 eco
find 69,329 playwright
list_channel-message 68,889 discord
list_sirens-deep-bot-message 59,491 discord
browser_snapshot 51,242 playwright
get_sirens-guild 43,634 discord
list_moxn-temporal-message 38,230 discord
get_store_app_details 37,828 steam

56 results over 32KB on sirens-deep alone, out of 533 tool calls.

Why it costs something

The consumer holds 8KB packaged and 16KB on the lane. A 761KB result spent 98% of its round trip to be thrown away, and the model then spends a further round on the spill file. That is the waste #940 measured, arriving from the servers rather than from the harness.

What this repository can and cannot do

It can only trim after transfer, which is the backstop rather than the strategy. Bounding at the source is each server's, and several are Kai's own repositories: bluesky-mcp, eco-app, the discord MCP. Playwright and signoz are third-party, where a screenshot being a megabyte is arguably correct and the harness question is whether that tool belongs in a roster whose consumer holds 16KB.

Acceptance

  • Each server owned here takes a result budget or a page argument.
  • For the third-party ones, a decision on whether the roster carries them rather than a bound.

Refs #940, #1113

Split out of #940. Its first acceptance criterion, no single tool result above 32KB before bounding, is **not met**, and every remaining offender belongs to an MCP server rather than to this repository. ## Measured Maximum `mcp.tool.result_bytes` by tool over seven days, oversized only. The two this repository owns are excluded because they are fixed: `scratch_search` in `3f3d528`, confirmed dropping from 761KB to 281 bytes across the days it landed, and `scratch_read` in #1113. | tool | max bytes | server | | --- | --- | --- | | `browser_take_screenshot` | **1,232,455** | playwright | | `get_author_feed` | 187,649 | bluesky | | `signoz_search_traces` | 130,997 | signoz | | `search_species` | 116,404 | eco | | `find` | 69,329 | playwright | | `list_channel-message` | 68,889 | discord | | `list_sirens-deep-bot-message` | 59,491 | discord | | `browser_snapshot` | 51,242 | playwright | | `get_sirens-guild` | 43,634 | discord | | `list_moxn-temporal-message` | 38,230 | discord | | `get_store_app_details` | 37,828 | steam | **56 results over 32KB on `sirens-deep` alone**, out of 533 tool calls. ## Why it costs something The consumer holds 8KB packaged and 16KB on the lane. A 761KB result spent 98% of its round trip to be thrown away, and the model then spends a further round on the spill file. That is the waste #940 measured, arriving from the servers rather than from the harness. ## What this repository can and cannot do It can only trim after transfer, which is the backstop rather than the strategy. **Bounding at the source is each server's**, and several are Kai's own repositories: `bluesky-mcp`, `eco-app`, the discord MCP. Playwright and signoz are third-party, where a screenshot being a megabyte is arguably correct and the harness question is whether that tool belongs in a roster whose consumer holds 16KB. ## Acceptance * Each server owned here takes a result budget or a page argument. * For the third-party ones, a decision on whether the roster carries them rather than a bound. Refs #940, #1113
Author
Member

The ownership analysis here is the part I would have added and you already did it: naming which servers are Kai's, and framing playwright and signoz as a roster question rather than a bound, since a megabyte screenshot is arguably correct and the harness question is whether that tool belongs in a roster whose consumer holds 16KB.

One structural note. This issue's acceptance spans four repositories and none of them has an issue. bluesky-mcp, eco-app, and the discord MCP each need their own, and none can be worked from here. As written, #1132 cannot be completed in the repository it lives in, which is the shape that has cost this lane four times tonight: a handoff stated in prose with nothing carrying it. coilyco-gaming/sirens-echo#1029's egress grant sat three days that way, and coilyco-bridge/deploy#772 and #777 exist now only because they got filed.

I have not filed these, deliberately. The bound-versus-page decision is not made, and filing three issues that each say "take a result budget, shape to be determined" would be worse than the sentence they replace. What I would do is decide the shape here first, on one server, and let that one become the template the other two copy.

If you would rather I file the three now with the question left open in each, say so and I will.

One number worth pulling forward from your table: 56 of 533 tool calls on sirens-deep were over 32KB. That is better framing than any single maximum, because it says the tail is routine rather than exceptional.

The ownership analysis here is the part I would have added and you already did it: naming which servers are Kai's, and framing playwright and signoz as a roster question rather than a bound, since a megabyte screenshot is arguably correct and the harness question is whether that tool belongs in a roster whose consumer holds 16KB. One structural note. **This issue's acceptance spans four repositories and none of them has an issue.** `bluesky-mcp`, `eco-app`, and the discord MCP each need their own, and none can be worked from here. As written, #1132 cannot be completed in the repository it lives in, which is the shape that has cost this lane four times tonight: a handoff stated in prose with nothing carrying it. `coilyco-gaming/sirens-echo#1029`'s egress grant sat three days that way, and `coilyco-bridge/deploy#772` and `#777` exist now only because they got filed. I have not filed these, deliberately. **The bound-versus-page decision is not made**, and filing three issues that each say "take a result budget, shape to be determined" would be worse than the sentence they replace. What I would do is decide the shape here first, on one server, and let that one become the template the other two copy. If you would rather I file the three now with the question left open in each, say so and I will. One number worth pulling forward from your table: **56 of 533 tool calls on `sirens-deep` were over 32KB.** That is better framing than any single maximum, because it says the tail is routine rather than exceptional.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#1132
No description provided.