# Remix a post with Xholic AI

> Only when the user explicitly asks for Xholic's remixer. Writes the user's own take on an X post in their voice (3 drafts). Uses Xholic AI credits: quote first and pass confirmCredits after the user agrees. Otherwise write the remix yourself from get_post and get_me.

`remix.generate` · write

- **MCP tool:** `remix_generate`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/remix/generate`
- **CLI:** `xholic remix generate`
- **Scope:** `write`
- **Plan:** Every plan, including the trial
- **Cost:** Xholic AI: up to about 12 credits (Xholic's remixer, three drafts). Returns a quote first; pass `confirmCredits` after the user agrees.
- **Rate limit bucket:** `write`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tweetId` | string | Yes | X post id (digits). |
| `closeness` | number 0–1 | Yes | 0 is loosely inspired, 1 stays close to the original. |
| `customInstructions` | string ≤ 500 chars | No |  |
| `remixAction` | "shorter" \\| "punchier" \\| "casual" \\| "hot_take" | No | Iterate on currentDraft: shorter, punchier, casual or hot_take. |
| `maxLength` | integer 30–2000 | No |  |
| `productId` | string ≤ 100 chars | No | Weave in one of the user's products. |
| `productContextIntent` | "context" \\| "focus" | No |  |
| `currentDraft` | string ≤ 25000 chars | No |  |
| `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. |
| `confirmCredits` | number 0–100000 | No | Xholic AI credits the user agreed to spend. Call first without it to get the quote, show the quote to the user, and pass the amount only after they say yes. |
| `quoteId` | string ≤ 100 chars | No | The quoteId from the quote the user agreed to. Send it with confirmCredits. |
