Claude Code MCP_TOOL_TIMEOUT is about 28 hours; Sume waits 55 s

Claude Code lets a tool call run for about 28 hours by default, but Sume's hosted jobs_wait caps one call at 55 seconds. Why you still loop in short slices.

4 min readSume
All posts

Claude Code will not cut off a Sume jobs_wait call on its own: its docs say MCP_TOOL_TIMEOUT defaults to about 28 hours when unset. That does not mean you can ask Sume for a long wait. The hosted server clamps every jobs_wait to 55 seconds, so a long render still takes several calls on the same job ids.

The two numbers belong to different layers. One is the client's patience, the other is how long Sume will hold one HTTP request open.

What each side enforces

A wait that stays open sends no data while it runs. Sume's jobs and results page says each edge in front of a server closes such a request at some point, and the caller then gets no tool result while the job keeps running and billing. That is why the server enforces the cap instead of trusting the client's timeout.

Timeouts that touch one Sume wait (Claude Code docs and Sume docs, read 2026-10-06)
LayerSettingValue
Claude CodeMCP_TOOL_TIMEOUT (per tool call)About 28 hours when unset
Claude CodePer-server timeout field in .mcp.jsonMilliseconds, overrides the env var for that server
Claude CodeCLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT5 minutes default for HTTP servers
Sume hosted MCPjobs_wait timeout_secondsDefault 50, cap 55

What to do in a Claude Code session

Treat the long client timeout as headroom, not a plan. Ask for slices of 45 to 55 seconds, pass every in-flight job id in one call (up to 20), and repeat the same call until the jobs are terminal. Sume's docs say a larger timeout_seconds is clamped, not rejected, and the response reports the clamp in wait_slice_clamped.

If a call returns wait_slice_expired or a 524 from the proxy, that is a transport event, not a job outcome. Issue jobs_wait again with the same ids, or read jobs_status once. Never submit the paid create again.

  • Do not raise MCP_TOOL_TIMEOUT hoping for a longer hold; it changes only the client side.
  • Do not report a job as blocked because one wait returned empty.
  • Use include_results: true when you want the completed results in the same answer.

The tradeoff

Short slices cost a few extra tool calls and a few extra tokens of conversation. A single 10-minute hold would cost nothing in calls but would die at the edge with a transport error while the job kept billing. Sume chose the first failure mode on purpose.

For a roughly ten-minute render, plan on about a dozen waits at 50 seconds, fewer at 55. The jobs run on Sume the whole time; use jobs_cancel if you want one stopped.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume