MCP stream dropped: re-issue with the same idempotency_key
MCP 2026-07-28 says re-issue a broken request with a new request ID. On a paid Sume tool, keep the same idempotency_key so the retry is not a second charge.

The new JSON-RPC request ID and the Sume idempotency_key are different things. When a stream drops, the MCP spec has you send a new request with a new request ID. On a paid Sume tool, put the same idempotency_key in that request, as long as it is the same operation and payload. Do not mint a fresh key.
The protocol rule is from the MCP 2026-07-28 changelog, read 2026-09-30. Key behavior is from Sume's MCP tools and gates and Jobs and results.
What changed in the MCP spec?
Major change 9 in the changelog removes SSE stream resumability, meaning the Last-Event-ID header and SSE event IDs, from the Streamable HTTP transport. It states that a broken response stream loses the in-flight request, and clients must re-issue it as a new request with a new request ID. The server will not replay the lost response for you.
Is a re-issued request a second job on Sume?
Not if the key stays the same. Paid and write tools require an idempotency_key, described as a stable key for transport and dedup, not human approval. On the REST path, the docs say a retry with the same Idempotency-Key returns the original job instead of billing a second one. The MCP docs I read do not spell out the replay result for each tool, so treat the key as the dedup handle and confirm with jobs_status if unsure.
When must the key change?
Reuse the same key only for the same operation and payload. A different payload on the same key returns 409 idempotency_conflict. So edit the prompt and you need a new key; lose the stream and you keep the old one.
| Situation | Request ID | idempotency_key |
|---|---|---|
| Stream dropped, same call | New (per MCP spec) | Same |
| Same call, payload edited | New | New |
Result read only (jobs_wait, jobs_status) | New | Not required (read tool) |
What if the wait dropped but the job was already created?
A transport failure on jobs_wait is never a job outcome. Re-issue jobs_wait on the same ids, or read jobs_status once, and do not resubmit the paid create. Store the job id from the first response whenever you got one. See idempotency keys for AI video APIs for the general pattern.
Sources
Related posts
- Idempotency keys for AI video APIs: retry without paying twice
- MCP 2026-07-28 spec: which version does Sume's hosted server speak?
- 409 idempotency_conflict vs idempotency_key_in_use: which one to retry
- MCP tool call timeouts on long-running video jobs: use jobs_wait
- Retry a failed run: same idempotency key returns old failure
More in Developers
- MCP tool name with a dot or underscore: tools.list vs tools_list
Sume MCP tool ids use underscores; a dotted alias such as tools.list is canonicalized on call. Retired aliases map to generate_image and generate_video.
- MCP OAuth token expires: Sume's one-hour token, no refresh
Sume's hosted MCP OAuth access tokens last one hour and the server advertises only the authorization_code grant, so re-login or use an API key for long runs.
- MCP traceparent in _meta: tracing a Sume tool call end to end
MCP 2026-07-28 documents traceparent in _meta. Sume's docs don't describe reading it, so correlate with the job id and x-sume-request-id instead.
- MCP server notify when work finished: Sume webhooks vs jobs_wait
The MCP roadmap lists push delivery for finished work. On Sume today, MCP agents wait in bounded jobs_wait slices; HMAC webhooks are a REST job feature.
Written by Sume