OpenCode MCP timeout: 5000 ms tools fetch vs Sume jobs_wait
OpenCode's remote MCP timeout is in milliseconds, default 5000, and covers fetching tools. Sume's jobs_wait holds up to 55 seconds per call, a separate limit.

In OpenCode, the remote MCP timeout key is a number of milliseconds for fetching the server's tools, and it defaults to 5000. It is a connect-time setting. A Sume video job is bounded by something else: each jobs_wait call holds for at most 55 seconds, and you call it again with the same ids until the job is terminal.
OpenCode's side is from its MCP servers page; Sume's side is from Jobs and results and the MCP quickstart, read 2026-09-30.
What does the OpenCode timeout key cover?
The OpenCode page lists the keys for a remote server: type (required, "remote"), url (required), enabled, headers, oauth and timeout. It describes timeout as milliseconds for fetching tools, default 5000. It does not describe it as a limit on how long an individual tool call may run, so do not read it as one.
For Sume, the url is https://mcp.sume.com/mcp. Per the quickstart, once connected you confirm the server by calling tools_list or mcp_health.
Which Sume limit applies to a long render?
Every remote HTTP POST /mcp call holds at most 55 seconds, with 50 as the default when you omit the value. When a wait returns wait_slice_expired, the docs say to retry jobs_wait with the same ids and never resubmit the paid create.
| Setting | What it bounds | Value in the docs |
|---|---|---|
OpenCode timeout | Fetching the server's tools | Milliseconds, default 5000 |
Sume timeout_seconds on jobs_wait | One wait slice on the remote server | Default 50, capped at 55 (larger values up to 600 are clamped) |
| Sume job itself | Not bounded by either | Keeps running and billing until terminal or canceled |
When should I raise the OpenCode timeout?
Raise it only if OpenCode fails to load the Sume tools at startup. Raising it will not help a render that outlasts a slice, because that is the jobs_wait behavior above. The server also reports listChanged: false in its capabilities, so the tool list should not change underneath a session once fetched.
What should the agent do when a wait slice expires?
Call jobs_wait again with the same job ids. If you start several renders, one batch wait with job_ids is preferred over one wait per job. A related walkthrough is Using Sume from OpenCode.
Sources
Related posts
More in Developers
- OpenRouter video provider.options on Sume: rejected, not dropped
OpenRouter lists provider passthrough configuration. Sume v1 runs one backend per model, so a non-empty provider.options returns 400 unsupported_parameter.
- OpenRouter video seed on Sume: no v1 model accepts it
OpenRouter lists seed for deterministic video generation. On Sume no v1 video model accepts seed: each reports seed false and the field is rejected.
- OpenRouter video size parameter on Sume: 400 unsupported_parameter
On Sume every video model reports supported_sizes null, so a size parameter returns 400 unsupported_parameter. Send resolution and aspect_ratio instead.
- OpenRouter video statuses vs Sume: cancelled or canceled?
OpenRouter lists four video job states; Sume's /v1/videos lists five including cancelled, while /v1/jobs spells it canceled. Both status sets side by side.
Written by Sume