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
list_instance_tools with schemas:true is over the wire limit, and the guard records it without asserting it
#569 budgeted the default response down — production measured 66,042 B before, 53,970 B after,
confirmed by calling the deployed tool. The schemas:true path was not fixed and is 65,969 B, 433 B over the 64 KiB limit the default path is now held to.
e19d7a3 measures it and records the number. It deliberately does not assert the limit,
because making it fit means changing what the argument means, and #569's agent declined to ship
that as a guess. That was the right call and it is why this is a separate issue: the measurement
exists, the decision does not.
Why this is not "just raise the cap"
This repo has ruled on that shape twice. #503 budgeted a payload down rather than raising a cap
and cost the context window less than the bug did; #569 did the same and the whole point of the allowed_only argument is to make the caller state what they need. Raising the limit for schemas:true restates the problem one number higher.
The honest options, none of which are free:
schemas:true implies allowed_only — a caller asking for full schemas almost certainly
wants the tools the agent can actually run. Changes what the argument means; say so in the
description.
Inferred: that no caller wants all 104 schemas. It is the premise behind options 1 and 3
and it is not measured — mcp_audit_log could establish it, and should, before option 1
narrows the argument for everyone.
list_instance_toolswithschemas:trueis over the wire limit, and the guard records it without asserting it#569 budgeted the default response down — production measured 66,042 B before, 53,970 B after,
confirmed by calling the deployed tool. The
schemas:truepath was not fixed and is65,969 B, 433 B over the 64 KiB limit the default path is now held to.
e19d7a3measures it and records the number. It deliberately does not assert the limit,because making it fit means changing what the argument means, and #569's agent declined to ship
that as a guess. That was the right call and it is why this is a separate issue: the measurement
exists, the decision does not.
Why this is not "just raise the cap"
This repo has ruled on that shape twice. #503 budgeted a payload down rather than raising a cap
and cost the context window less than the bug did; #569 did the same and the whole point of the
allowed_onlyargument is to make the caller state what they need. Raising the limit forschemas:truerestates the problem one number higher.The honest options, none of which are free:
schemas:trueimpliesallowed_only— a caller asking for full schemas almost certainlywants the tools the agent can actually run. Changes what the argument means; say so in the
description.
instance_messagesreturnsnextCursorandhasMore: trueand has no cursor input — every message older than the first page is unreachable over MCP #566 just gaveinstance_messagesa real cursor. Consistent with afix that landed today, and the only option that scales past one instance.
tools: ["a","b"]). Cheapest, and matches how thepayload is actually consumed — nobody reads 104 schemas.
Acceptance criteria
schemas:trueon the largest real instance is under the limit, measured on the deployedtool, not on the API body.
list_instance_toolsdocuments 2 of the 4tiervalues it returns, and its default response is 117 KB — enough to exceed a host's limit on one instance #569's first fix passed its guard at ~54 KB while productionserved 66,042 B, because
jsonTextpretty-printed it after the assertion — the measurementmust happen at the layer the client receives.
ADR 0002.
Verified vs inferred
list_instance_toolsdocuments 2 of the 4tiervalues it returns, and its default response is 117 KB — enough to exceed a host's limit on one instance #569's guard; the 66,042 → 53,970 B defaultimprovement, measured on the deployed tool; that
e19d7a3records without asserting; thejsonTextpretty-print that defeated the firstlist_instance_toolsdocuments 2 of the 4tiervalues it returns, and its default response is 117 KB — enough to exceed a host's limit on one instance #569 fix.and it is not measured —
mcp_audit_logcould establish it, and should, before option 1narrows the argument for everyone.