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.

Sume's hosted MCP OAuth access token expires after one hour, and the server does not offer a refresh grant, so when it lapses the client has to sign in again. In the OAuth package the access-token lifetime is a one-hour constant, the authorization-server metadata lists only the authorization_code grant, and the token response carries expires_in but no refresh_token. For a run that must outlast an hour, the docs' other path is an API key.
These facts are from the MCP OAuth package and token endpoint source, plus Sume's MCP OAuth and API keys page, read 2026-09-30.
What does the token endpoint return?
The token response contains access_token, token_type, expires_in and scope. There is no refresh_token field. A code comment in the OAuth package also says clients such as Cursor often advertise refresh_token, which the server ignores because refresh is not implemented yet. Treat that as the current state, not a promise.
How do I recover when the token expires?
Sign in again. In Claude Code that is the quickstart's claude mcp login sume. Claude Code has been fixing sign-in handling recently: its 2.1.286 changelog entry fixes a repeat MCP sign-in request replacing the pending sign-in link, which could stop that link from working. If a sign-in link seems dead, request it once and use it before asking again.
Which auth mode fits a long or unattended run?
The docs say API-key remote MCP remains the path for automation that does not speak OAuth. You send either Authorization: Bearer $SUME_API_KEY or x-api-key, and API-key sessions can see write and paid tools; execution still needs idempotency_key on mutating or paid calls.
| OAuth | API key | |
|---|---|---|
| Lifetime | Access token, one hour | No expiry stated in these docs |
| Refresh | Not offered (authorization_code only) | Not needed |
| Tools | mcp:read; write only if granted on consent | Full hosted tool set |
| Fits | Interactive sessions | Automation and long runs |
Does an expired token cancel running jobs?
The token only authenticates your calls. A job already submitted is a Sume job with its own id, so after you re-authenticate, read it with jobs_status or jobs_result rather than resubmitting the paid create. The consent and scope flow is in the MCP OAuth flow for remote clients.
Sources
Related posts
More in Developers
- 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.
- Three Responses subagents, one Sume workspace queue
Responses multi_agent runs 3 subagents by default and they share your tools. Sume accepts extra jobs as queued until queue_full; give each create its own key.
- Music API 400 model_not_found: fix an unknown model id
An unknown model on POST /v1/music-router/generate fails with 400 model_not_found and a catalog_url. Use an id from GET /v1/music-router/models or omit model.
Written by Sume