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.
- OAuthFlowError issuer mismatch in the MCP Python SDK 2.2
Python SDK 2.2 rejects authorization server metadata whose issuer is not the server's origin. Sume's metadata sets issuer to the MCP origin.
- MCP Python SDK idle session 404: what it means for Sume jobs
Python SDK 2.2 closes stateful sessions idle for 30 minutes, then 404s. Sume's hosted MCP is POST-only; re-poll jobs_wait with the same ids, never resubmit.
- MCP server/discover against Sume's hosted endpoint
The 2026-07-28 MCP spec adds server/discover. Sume's hosted server does not implement it and answers -32601; read initialize and tools/list instead.
Written by Sume