MAX_MCP_OUTPUT_TOKENS 25,000: size a Sume jobs_wait wave read

Claude Code caps MCP output at 25,000 tokens and saves larger results to a file. How that meets Sume's jobs_wait include_results and a batch jobs_result read.

4 min readSume
All posts

Keep a Sume wave read small enough to fit Claude Code's MCP output limit, or let it spill to a file on purpose. Claude Code warns when any MCP tool output exceeds 10,000 tokens and limits output to 25,000 tokens by default; set MAX_MCP_OUTPUT_TOKENS to raise the limit, but the warning threshold is fixed. A result over the limit with no image content is saved to a file, and the conversation gets a message naming the path. For Sume, the call most likely to cross that line is jobs_wait with include_results: true on a wave of up to 20 jobs.

The Claude Code numbers are from its MCP documentation, read on 2026-10-03. The Sume behavior is from Jobs and results.

What are Claude Code's output limits?

The page lists them plainly. The environment variable applies to tools that do not declare their own limit; a tool that sets anthropic/maxResultSizeChars in its tools/list entry uses that value for text content instead, up to a hard ceiling of 500,000 characters. Tools that return image data are still subject to MAX_MCP_OUTPUT_TOKENS, and the annotation has no effect on them.

When a text result goes over, Claude reads the file when it needs the content, so nothing is lost; it just costs an extra step. I did not find an annotation in Sume's tool definitions, so assume the plain 25,000-token default applies to Sume tools unless you have changed it.

Output limits in Claude Code, from its MCP docs (code.claude.com), read 2026-10-03.
SettingValueApplies to
Warning threshold10,000 tokens, fixedAny MCP tool output
Default maximum25,000 tokensTools that declare no limit
MAX_MCP_OUTPUT_TOKENSYou choose, for example 50000Tools that declare no limit; image results too
anthropic/maxResultSizeCharsUp to 500,000 charactersText content of the annotated tool only

How does a Sume wave read meet that limit?

Sume's jobs_wait takes 1 to 20 ids with wait_for of all or any. With include_results: true, every id that completed comes back with its jobs_result answer in results[], so a wave needs no separate read. Results that do not fit in one answer are named in results_omitted.job_ids; read those with one batch jobs_result.

That is Sume's own size handling, and it is separate from the client's. A wave of many finished jobs can still exceed Claude Code's limit even when Sume returns everything it can, in which case Claude saves the answer to a file. Either way the ids are not lost: the job records stay readable by jobs_status and jobs_result.

What should I do in practice?

Pick the cheapest of three moves. For small waves, leave the default and include results. For a wave of videos, wait without results and read ids in smaller groups. For a script you control, raise the variable once rather than per call.

Keep the hold limit in mind while you do this: jobs_wait holds at most 55 seconds per call (default 50), and on wait_slice_expired you retry with the same ids and never resubmit the create.

# a larger ceiling for this one session
MAX_MCP_OUTPUT_TOKENS=50000 claude

# then, in the prompt:
# wait for these job ids with include_results true; if results_omitted lists ids,
# read them with one jobs_result call

What if a result also contains images?

The Claude Code page says image data stays subject to the token limit, and raising the environment variable is the only option for those results. Check what your own call returns before changing the limit, and prefer reading image-heavy results in smaller groups.

How do I tell the limit was hit?

Claude Code replaces an over-limit text result with a message that names the saved file path. If you see that message after a jobs_wait, the call itself succeeded and the jobs are done; only the display was redirected. Read the file, or ask for the ids in two smaller waves.

Do not retry the wait because the answer looks missing. A retry re-reads the same ids, which is harmless, but a retry of the create would be a second paid render.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume