get_currency ignores its own currency filter for payload size: 135 KB returned whether you name one currency or none #231

Closed
opened 2026-08-12 23:15:03 +00:00 by coilyco-ops · 0 comments
Member

QA sweep, Eco via Sirens, day 40, 2026-08-12.

Observed

The currency parameter adds a selected block but never narrows the response:

Call Size currencies[] length
get_currency(currency="Sun Coin") (no match) 135,178 chars 185
get_currency(currency="2533707") 135,531 chars 185
get_currency(currency="Spectres") 136,670 chars 185

All three exceed the MCP response cap, so asking about one currency fails the same way asking about all of them does. mode stays "report" even for a single-currency query.

The bulk is currencies (65 KB) + personal (65 KB), each entry carrying a full holders object that is identical boilerplate on every row:

"holders": {"reachable": false, "note": "Live top-holder balances need the stores/economy
 exporter mod running on the server (eco-app#58); it is not reachable right now.",
 "accountsCounted": 0, "totalHoldings": 0, "list": []}

185 copies of the same 200-byte unavailability note is ~37 KB on its own.

Also: not-found returns everything

currency="Sun Coin" sets notFound: true and then returns the entire 135 KB report anyway. A miss should be a short response.

Expected

  • With a currency argument: return that currency plus summary totals. Drop currencies[]/personal[].
  • Hoist the shared holders unavailability note to the top level.
  • On notFound, return the miss and a suggestion list, not the full corpus.

Separate from the attribution bug in the sibling issue — this one is purely response size.

QA sweep, Eco via Sirens, day 40, 2026-08-12. ## Observed The `currency` parameter adds a `selected` block but never narrows the response: | Call | Size | `currencies[]` length | |---|---|---| | `get_currency(currency="Sun Coin")` (no match) | 135,178 chars | 185 | | `get_currency(currency="2533707")` | 135,531 chars | 185 | | `get_currency(currency="Spectres")` | 136,670 chars | 185 | All three exceed the MCP response cap, so asking about **one** currency fails the same way asking about all of them does. `mode` stays `"report"` even for a single-currency query. The bulk is `currencies` (65 KB) + `personal` (65 KB), each entry carrying a full `holders` object that is identical boilerplate on every row: ```json "holders": {"reachable": false, "note": "Live top-holder balances need the stores/economy exporter mod running on the server (eco-app#58); it is not reachable right now.", "accountsCounted": 0, "totalHoldings": 0, "list": []} ``` 185 copies of the same 200-byte unavailability note is ~37 KB on its own. ## Also: not-found returns everything `currency="Sun Coin"` sets `notFound: true` and then returns the entire 135 KB report anyway. A miss should be a short response. ## Expected - With a `currency` argument: return that currency plus summary totals. Drop `currencies[]`/`personal[]`. - Hoist the shared `holders` unavailability note to the top level. - On `notFound`, return the miss and a suggestion list, not the full corpus. ## Related Separate from the attribution bug in the sibling issue — this one is purely response size.
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/eco-app#231
No description provided.