Update a client
Edit a client’s display name and/or its config. Two ways to change the config: config replaces it wholesale, and set changes named fields over the config read inside the write transaction — prefer set, because a whole-config round-trip composed from a stale read reverts whatever landed in between.
Config edits require expectedConfigId and renames require expectedName. A stale token is 409 CONFLICT whose details carries the current value: re-read the client and retry. A config edit that resolves to byte-identical settings writes nothing at all.
Guest callers are denied (a write).
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.
Client name or ID. A name is matched case-insensitively and must be unique in the project; an ambiguous name is refused with 409 CONFLICT listing the candidate ids rather than resolved to one of them.
Body
- Option 1
- Option 2
- Option 3
Edit a client. Provide at least one of name, config (whole-config replacement) or set (named fields); config and set are mutually exclusive. Config edits require expectedConfigId and renames require expectedName, so a concurrent edit is rejected rather than overwritten.
New display name.
1The name you last read for this client. REQUIRED whenever the request sends name: a rename does not rotate the config, so expectedConfigId cannot detect a concurrent one. A mismatch is 409 CONFLICT carrying details.currentName.
1The configId you last read for this client. REQUIRED whenever the request changes the config (config or set): without it a write composed from a stale read silently reverts whatever landed in between. A mismatch is 409 CONFLICT carrying details.currentConfigId.
1The impact you last read for this client. Optional, and checked transactionally when sent — a consumer added or removed since you read it makes the write conflict (details.currentImpact) instead of quietly affecting more than you were told it would.
Replacement client config v2. Replaces the config wholesale; use set to change named fields instead.
Named fields to change, applied over the client's current config INSIDE the write transaction. Absent always means keep. null means "make it go away", and what that means depends on the field: a required field resets to its documented default, an optional one clears to absent. Object-valued fields are whole-object replacements, not merges — to change a deep knob, read the client, overlay the sub-object, and send it back whole. hostStyle, clientCapabilities, hostContext and server membership are deliberately not settable here (use a whole-config replacement, or the servers operation).
Response
The updated client settings.
A client plus its resolved config (model, capabilities, host context, MCP profile) and the read-backs an editor needs.
Client config v2 DTO. Opaque object; shape mirrors the inspector's client editor.
The concurrency token — see Client.configId.
Unix epoch milliseconds.
Unix epoch milliseconds.
What a config edit to this client would follow. These are the DURABLE consumers that re-resolve the client's current config; past runs, per-turn traces and pinned eval-suite snapshots hold a config id and are unaffected. Direct playground and client-chat use follows the edit too and has no row to count.

