Update a job
job_updateChange a job at the revision you read (a stale one refuses CONFLICT with currentRevision; read it again with job_get): its name, purpose or description (null clears either), agents (the set you send replaces the old one; adjust your own role this way), definitions (the set you send replaces the whole set: send every definition to keep; a set sent as it is changes nothing, and a step's lastCheck and health, as job_get reads them, are ignored), or archived (true archives it: it leaves workspace_load and takes no new tasks, and tasks keep its name; false restores it).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>",
"expectedRevision": "<expectedRevision>"
},
"name": "job_update"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job, by its id (job_create returns it; workspace_load lists your jobs and the others by id). | |
| why | No | Required for workspace items: one sentence on what the person is trying to accomplish, in their terms, not a description of this edit. Every workspace write takes one; sessions and summaries record themselves from it. At most 300 characters. | |
| name | No | The job's name, unique in the workspace (founder-posts, inbox-triage): lowercase letters, digits, - and _, starting with a letter or a digit, at most 64 characters. | |
| agents | No | The job's agents, replacing the ones it has (send [] for none), at most 20: { agent, role? }. | |
| purpose | No | One line on what the job is for, at most 280 characters ("The founder's notes become posts on X and LinkedIn"): shown under its name wherever jobs are listed, so a reader can tell which job does what. Empty is none. null clears it. | |
| archived | No | true archives the job: it leaves workspace_load and takes no new tasks, and tasks keep its name. false restores it. | |
| definitions | No | The job's task definitions, at most 5, in order: each says what a task of the job is (its types), how to create one (instructions) and the steps it goes through: { name, types, instructions?, steps }. The job's purpose, description and definitions take at most 30000 bytes as JSON. The set you send replaces the whole set the job has: send every definition to keep (job_get reads them), [] for none. | |
| description | No | What the job is and how it is done, in markdown, at most 8000 characters: the standing brief its agents read. The job's purpose, description and definitions share 30000 bytes as JSON. null clears it. | |
| expectedRevision | Yes | The job's revision as you read it (job_get, job_create); a stale one is CONFLICT with currentRevision. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job | Yes |