MCP tasks/get vs Sume's Agent Completion status_url polling
The MCP 2026-07-28 tasks extension polls by handle with tasks/get. Sume's Agent Completions poll a status_url until next_action is not poll_status.

Both patterns solve long-running work with a handle you poll. In the MCP tasks extension, you call tasks/get with a task handle. In Sume's Agent Completions, you call the receipt's status_url until next_action is something other than poll_status. They are separate surfaces and neither calls the other.
The tasks facts come from the 2026-07-28 release candidate post: handle-based tasks/get, tasks/update and tasks/cancel, with tasks/list removed. Sume's side is in the Agent Completions docs.
Mapping
| Concept | MCP tasks extension | Sume Agent Completion |
|---|---|---|
| Read state | tasks/get | GET on status_url |
| Cancel | tasks/cancel | POST on cancel_url |
| List | tasks/list removed | GET /v1/agent-runs lists runs |
| Statuses | Defined by the extension | queued, processing, completed, failed, canceled |
| Loop control | Client decides | Stop when next_action is not poll_status |
A poll loop
The loop below reads the receipt at the status_url returned by the 202 response and stops on the documented next_action rule. For a production client, prefer the SDK's waitForRun or a webhook, as the SDK docs recommend.
export async function poll(statusUrl: string): Promise<unknown> {
for (;;) {
const res = await fetch(statusUrl, {
headers: { Authorization: `Bearer ${process.env.SUME_API_KEY}` },
});
const { data } = await res.json();
if (data.next_action !== "poll_status") return data;
await new Promise((r) => setTimeout(r, 2000));
}
}Caveats
- Do not use a run id as a job id; they are different families.
retry_lateris a value ofnext_action, so a loop that only checks status can stop at the wrong time.- Cap total wait time and cancel at the deadline.
Sources
Related posts
More in Developers
- MCP tool ran twice: idempotency_key saves your Sume render
Claude Code fixed MCP tool calls that sometimes ran twice on large results. Sume's paid MCP tools require an idempotency_key so a repeat does not bill twice.
- MCP TS SDK 2.3 enforces one server per request: where state lives
TypeScript SDK 2.3.0 enforces one server instance per request. For a media tool that means job state belongs in job ids, as Sume's jobs_wait does.
- Measure your voice's characters per second, then budget video slots
Guessing words per minute breaks a 3-second hook. Voice one Sume take, divide characters by duration_seconds, and size each video slot from your own number.
- Midjourney's Aug 29 edit update: spot silent image-model changes
Midjourney improved its V8.2 edit model two days after opening tests. Keep five fixed edit jobs and compare them monthly so a vendor update never surprises you.
Written by Sume