jobs_wait for 20 transcription jobs in one MCP call
The hosted MCP jobs_wait takes up to 20 job_ids, wait_for all or any, and include_results returns each finished transcript. Retry slices of 55 seconds.

With the hosted Sume MCP server, one jobs_wait call can wait on up to 20 transcription jobs: pass job_ids, choose wait_for all or any, and set include_results: true to get each finished transcript back in results[] without a separate read. Each call holds at most 55 seconds, so on wait_slice_expired you call it again with the same ids. This follows Jobs and results, read 2026-10-06.
What does the batch response look like?
A multi-id wait answers with object: "job_wait_batch" and a status snapshot per id. Results too large for one answer are listed in results_omitted.job_ids; read those with one batch jobs_result. If Sume operations stopped a job, outcome: "operator_stopped" comes back at once and operator_stopped.pending_job_ids names the ids still running. Asking again about the stopped ids cannot change the answer.
| Field | Meaning |
|---|---|
job_ids | 1 to 20 ids; unknown or foreign ids fail the whole call |
wait_for | all (default) or any; the rest keep running and keep billing |
include_results | Completed ids come back with their jobs_result answer |
wait_slice_expired | Retry with the same ids; never resubmit the paid create |
operator_stopped | At least one id was stopped by operations; holds are refunded |
A wave of 20 STT jobs
Create the jobs with stt_create (each needs its own idempotency_key), keep the job ids, then wait. The arguments for the wait are plain JSON:
{
"name": "jobs_wait",
"arguments": {
"job_ids": ["job_001", "job_002", "job_003"],
"wait_for": "all",
"include_results": true,
"timeout_seconds": 50
}
}Why batch instead of one wait per job
Twenty single waits mean twenty open calls, each with its own 55-second ceiling. One batch wait gives you a single call per slice and a snapshot of the whole wave. For three or more independent calls of one shape, the MCP run contract also points to one script_run, so the loop runs on the Sume side and only the returned value comes back; each paid create inside still needs its own idempotency_key.
If you drive Sume over REST instead, there is no batch wait: poll GET /v1/jobs/{id}/status with backoff, as in polling transcription jobs without a 429.
Sources
Related posts
More in Integrations
- jobs_wait outcomes: wait_slice_expired, operator_stopped, omitted
What each jobs_wait answer means on Sume's hosted MCP and what your agent should do next: call again, stop waiting on stopped ids, or read omitted results.
- Latenode webhook trigger: fast mode or default for Sume callbacks?
Use Latenode's default 200 reply, not a Webhook Response node, for Sume run callbacks; fast mode hides scenario errors. Branch on outcome, dedupe on request_id.
- Manus Custom MCP Servers: add Sume under Settings > Integrations
In Manus, open Settings > Integrations > Custom MCP Servers > Add Server and enter Sume's HTTPS endpoint and credentials. Manus verifies by fetching tools.
- Is mcp.dev.sume.com a staging URL I can use? No, use mcp.sume.com
mcp.dev.sume.com is for Sume's own development environments. Customer configs should use https://mcp.sume.com/mcp, and OAuth tokens are bound to that resource.
Written by Sume