Upload tokens to a server account
Creates the account (201) or replaces its token in place (200, same id). A well-formed account id never creates one: an unknown id is 404. Any other reference is a name, and a name no account has creates the account.
Nothing checks who a token belongs to. The name is your own label, and replacing a token replaces it whoever it belongs to.
The account becomes hosted-only: hosted runs use it, and no local app, browser or sandbox ever receives its token. Tokens are used with the server URL saved in the project, so the body takes no URL. ID tokens are refused. Each token field is at most 16 KB.
Uploads to one server are budgeted per person: 60, refilling at 120 an hour. Past it the answer is 429 with Retry-After and details.retryAfterMs. On a server shared with the project, only project admins upload, and a member gets 403.
The answer is the account, never a token.
Authorizations
MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.
Path Parameters
ID of the hosted project that contains the server.
ID of the server inside the project.
The account's id, or its name. A well-formed account id is matched as an id; anything else is a name, matched ignoring case.
Body
Response
The token was replaced; the account keeps its id.
One account a saved server signs in with. METADATA ONLY: no account response carries a token, a vault id, an email or any other recorded profile field.
Never changes, including while the account needs reconnecting. An eval suite's saved account choice stores it.
Your own label, or null for an account nobody named. Nothing checks it against who the token belongs to.
project accounts belong to a server shared with the project; project admins manage them.
personal, project The effective default: the account marked as default, else the oldest. Runs with no saved account choice act as it.
The issuer rejected a refresh, or the token expired with no refresh token stored. Upload a fresh token to restore it; the id stays.
Hosted runs use the account, and no local app, browser or sandbox receives its token. True for accounts written by PUT .../accounts/{account} and for project accounts.
When the access token expires, epoch milliseconds.

