# Edit a Worker

> Change a Worker's instructions, voice, topics, products, size or schedule. Call it only when the user asked for this in the conversation; never on your own initiative.

`workers.update` · write

- **MCP tool:** `update_worker`. Loaded by default in MCP clients.
- **REST:** `POST /v1/workers/update`
- **CLI:** `xholic workers update`
- **Scope:** `write`
- **Plan:** Pro plan or higher
- **Cost:** Free.
- **Rate limit bucket:** `write`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `workerId` | string (uuid) | Yes |  |
| `changes` | object | Yes |  |
| `changes.name` | string ≤ 80 chars | No |  |
| `changes.status` | "ACTIVE" \\| "PAUSED" | No | PAUSED saves the worker without running it, for when the plan's active workers are all in use. |
| `changes.voiceMode` | "OWN" \\| "CREATOR" \\| "HYBRID" | No | OWN is "My voice"; CREATOR writes in the creators' style; HYBRID is the user's voice with the creators' rhythm. |
| `changes.creatorXIds` | array of string ≤ 120 chars (max 3) | No | Creator xid values from findWorkerCreators: one for HYBRID unless the user asks for more (up to three), one to three for CREATOR, none for OWN. |
| `changes.instructions` | string ≤ 2000 chars or null | No | The worker's brief, broad boundaries only: who it writes for, who speaks, how the account likes to write, the areas it usually writes in, when to mention products and hard bans. Never a thesis, a point of view to push or specific topics to cover. |
| `changes.applyAccountRules` | boolean | No | Follow the account's saved writing rules. |
| `changes.mirrorProvenPosts` | boolean | No | Shape posts on formats that already work in the niche. |
| `changes.topicMode` | "FOR_YOU" \\| "PRODUCT" \\| "CUSTOM_TOPIC" \\| "NICHE_TRENDING" | No | FOR_YOU is "For you" (topics from the profile); PRODUCT is "Your products"; CUSTOM_TOPIC is a custom topic; NICHE_TRENDING follows what is trending for its keywords. |
| `changes.customTopic` | string ≤ 500 chars or null | No | CUSTOM_TOPIC: what to post about. NICHE_TRENDING: one to five comma-separated keywords. |
| `changes.productIds` | array of string ≤ 120 chars (max 5) | No | PRODUCT only: saved product IDs from getAutomationSetup or getAccountContext. |
| `changes.outputCount` | 8 or 12 or 24 | No | Posts written per run: 8, 12 or 24. |
| `changes.scheduleMode` | "ON_DEMAND" \\| "DAILY" \\| "WEEKLY" | No |  |
| `changes.scheduleTimeMinutes` | integer 0–1439 or null | No | DAILY or WEEKLY: minutes after midnight in the account's timezone, e.g. 540 for 9:00. |
| `changes.scheduleDayOfWeek` | integer 0–6 or null | No | WEEKLY: 0 is Sunday, 6 is Saturday. |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |
