Skip to content

TurnStartParams

turn/start params.

turn/start.providerRequestOptions is deliberately absent: RULED to stay off the published schema. The schema is the contract, and a free-form-object node kind is revisited only if the experimental field graduates.

  • commandId
  • displayText
  • ifBusy
  • input
  • reasoningEffort
  • sessionId
  • tokenBudget — Experimental
  • userShell
  • workspaceRoots
Source

schema/msp/experimental/msp.schema.json#/types/TurnStartParams

{
"description": "`turn/start` params.\n\n`turn/start.providerRequestOptions` is deliberately absent: **RULED to stay off the published schema.** The\nschema is the contract, and a free-form-object node kind is revisited only\nif the experimental field graduates.",
"properties": {
"commandId": {
"description": "The idempotency handle (UUIDv7). The fresh turn's `turnId`\nderives from it.",
"type": "string"
},
"displayText": {
"description": "Presentation form of the prompt for transcripts. Durable; carried on\nthe resulting user-message view item. Never model-visible.",
"type": "string"
},
"ifBusy": {
"$ref": "#/$defs/IfBusy",
"description": "Disposition when a turn is already running; default `queue`."
},
"input": {
"description": "Ordered content parts; required and non-empty.",
"items": {
"$ref": "#/$defs/TurnInputPart"
},
"type": "array"
},
"reasoningEffort": {
"$ref": "#/$defs/ReasoningEffort",
"description": "Reasoning tier sampled at submission for this turn."
},
"sessionId": {
"description": "The target session.",
"type": "string"
},
"tokenBudget": {
"description": "This turn's token budget in tokens: an\ninteger floor of 1, riding to workflow-launch admission and inert\nwhen no workflow launches. Omitted means no budget; 0 or a\nnon-integer is invalid params, as is explicit `null`. No wire upper bound beyond the\ninteger type. Experimental: D6 rules\nnames and shape only, v1 membership stays open, so the member\nships off the stable bundle until a v1 ruling graduates it.",
"minimum": 1,
"type": "integer",
"x-msp-descriptor": "turn/start.tokenBudget",
"x-msp-stability": "experimental"
},
"userShell": {
"$ref": "#/$defs/TurnUserShell",
"description": "A queued `!` shell action riding this turn:\nthe `!cmd` typed while a turn runs, executed at the next\nmodel-call boundary before any later steer. Exclusive with `text`\nand `skill` input; `input` may be empty only when this member is\npresent. Capability-gated on `userShell`: a carrying turn on a\nconnection without the grant fails `-32010 capabilityRequired`.\nExplicit `null` is invalid params (the null-tolerant set is\nclosed). A v1 stable member."
},
"workspaceRoots": {
"description": "A sticky REPLACEMENT of the session's runtime workspace-root set,\nbinding at this turn's launch and persisting for subsequent turns\nuntil replaced again — unlike `reasoningEffort`, which is\nthis-turn-only. Same shape and validation as\n`session/start.workspaceRoots`; invalid params on an explicit\n`ifBusy: \"steer\"` submit and so is explicit `null`; omitted means \"unchanged\", never\n\"reset\".",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"commandId",
"input",
"sessionId"
],
"type": "object"
}