Sume MCP 256 KiB output budget: oversize error is not a failed job
Sume's MCP tool results are capped at 256 KiB serialized. An oversize result returns an explicit error instead of a cut-off value, and the job may be fine.

A Sume hosted MCP tool result is limited to 256 KiB once serialized. When a result is bigger, the server returns an explicit error rather than a silently truncated value, and the error does not mean the job failed. The figure comes from Sume's operations note on API and MCP work bounds on origin/main, read on 2026-10-04. Read the job directly before you resubmit anything.
Why does the budget exist?
A tool result goes back into a model's context. A very large list or log would crowd out the conversation, and a half-cut JSON value would be worse than an error because a model could act on it. Sume chooses to fail loudly. The budget applies to the serialized result of one tool call, including a jobs_result, a jobs_events page or a list.
How should I react?
| Symptom | Meaning | Next step |
|---|---|---|
Oversize error from jobs_result | result larger than 256 KiB | do not recreate; fetch a smaller view |
| Oversize error from a list | too many rows | pass a smaller limit and page |
jobs_status says running | job still working | jobs_wait, up to 55 s per slice |
jobs_get shows a failure | a real failure | read error.public_reason and error.retryable |
How do I get less data back?
Use the narrow calls. jobs_status returns the state without the payload, jobs_events returns sanitized lifecycle events with a default limit of 50, and usage_get takes an optional limit that defaults to 20. The Jobs and results page lists the read tools.
Inside script_run, filter before you return. The script sees full inner results, and only the value you return, plus the calls[] journal, goes back to the conversation. Return ids and the one field you need, not whole objects. That keeps the response small and the model's context clean.
When is a failure real?
Only trust a failure from the job. Call jobs_get and read error.public_reason, error.message and error.retryable; if the status looks odd, jobs_events shows the lifecycle. A jobs_cancel on a failed job returns 409 with no error fields, so do not use it to inspect. Never recreate a job on an oversize error, because that would pay twice for work that already succeeded. Reusing the same idempotency_key protects you if you do re-send. The MCP overview covers the rest of the tools.
Sources
Related posts
More in Developers
- Sume MCP token lasts 3600 s with no refresh grant: plan for it
Sume's hosted MCP OAuth issues one-hour access tokens and only the authorization code grant. What a long agent run should do at minute 61.
- Sume MCP rate limit: one write per run created, none per status poll
Over Sume's hosted MCP, a tool call spends one write for the run it creates, and a jobs_status poll spends none. The numbers per plan and a Python budget check.
- Sume SDK: try/catch misses a 402, generated calls return { error }
Generated @sume-com/sdk operations return { data, error, response } instead of throwing, so a 402 or 429 slips past try/catch. Check error on every call.
- Sume SDK error.retryable: server flag first, status only as fallback
SumeApiError.retryable uses the error envelope's retryable flag when present and falls back to 408, 429 or 5xx otherwise. A 409 is never retried by status.
Written by Sume