Remix actions
8 actions. Every field marked Required must be sent; account, dryRun, idempotencyKey, confirmCredits and quoteId are the control fields every surface adds.
Remix a post with Xholic AI
Section titled “Remix a post with Xholic AI”remix.generate · write
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.
- MCP tool:
remix_generate. Catalog: reach it withfind_actionsandrun_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
confirmCreditsafter 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” \ |
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. |
Pick another remix draft
Section titled “Pick another remix draft”remix.select_draft · write
Switch a remix to another of its drafts. Free; the drafts were already paid for.
- MCP tool:
remix_select_draft. Catalog: reach it withfind_actionsandrun_write_action, or turn on the full toolset. - REST:
POST /v1/remix/select-draft - CLI:
xholic remix select-draft - Scope:
write - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
write
Input
| Field | Type | Required | Description |
|---|---|---|---|
remixId |
string | Yes | |
index |
integer 0–9 | Yes | |
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. |
Post a remix
Section titled “Post a remix”remix.post · publish
Post a remix to X now, optionally with edited text. Call it only when the user asked for this in the conversation; never on your own initiative. Spends a post credit.
- MCP tool:
remix_post. Catalog: reach it withfind_actionsandrun_write_action, or turn on the full toolset. - REST:
POST /v1/remix/post - CLI:
xholic remix post - Scope:
publish. Destructive: it can’t be taken back - Plan: Every plan, including the trial
- Cost: Spends a post credit when the post goes live.
- Rate limit bucket:
write
Input
| Field | Type | Required | Description |
|---|---|---|---|
remixId |
string | Yes | |
remixedText |
string ≤ 25000 chars | No | Edited text. Leave out to post the selected draft. |
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. |
Remix history
Section titled “Remix history”remix.history · read
Past remixes with their source posts and drafts, newest first.
- MCP tool:
remix_history. Catalog: reach it withfind_actionsandrun_read_action, or turn on the full toolset. - REST:
GET /v1/remix/history - CLI:
xholic remix history - Scope:
read - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
read
Input
| Field | Type | Required | Description |
|---|---|---|---|
cursor |
string | No | |
limit |
integer 1–50 | No | |
account |
string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection’s default account. |
Remix presets
Section titled “Remix presets”remix.list_presets · read
The account’s saved custom instructions for remixing.
- MCP tool:
remix_list_presets. Catalog: reach it withfind_actionsandrun_read_action, or turn on the full toolset. - REST:
GET /v1/remix/list-presets - CLI:
xholic remix list-presets - Scope:
read - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
read
Input
| Field | Type | Required | Description |
|---|---|---|---|
account |
string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection’s default account. |
Save a remix preset
Section titled “Save a remix preset”remix.create_preset · write
Save a named custom instruction for remixing. Call it only when the user asked for this in the conversation; never on your own initiative.
- MCP tool:
remix_create_preset. Catalog: reach it withfind_actionsandrun_write_action, or turn on the full toolset. - REST:
POST /v1/remix/create-preset - CLI:
xholic remix create-preset - Scope:
write - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
write
Input
| Field | Type | Required | Description |
|---|---|---|---|
label |
string ≤ 40 chars | Yes | |
instruction |
string ≤ 500 chars | Yes | |
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. |
Edit a remix preset
Section titled “Edit a remix preset”remix.update_preset · write
Change a remix preset’s label and instruction. Send both. Call it only when the user asked for this in the conversation; never on your own initiative.
- MCP tool:
remix_update_preset. Catalog: reach it withfind_actionsandrun_write_action, or turn on the full toolset. - REST:
POST /v1/remix/update-preset - CLI:
xholic remix update-preset - Scope:
write - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
write
Input
| Field | Type | Required | Description |
|---|---|---|---|
presetId |
string (uuid) | Yes | |
label |
string ≤ 40 chars | Yes | |
instruction |
string ≤ 500 chars | Yes | |
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. |
Delete a remix preset
Section titled “Delete a remix preset”remix.delete_preset · write
Delete a remix preset. Call it only when the user asked for this in the conversation; never on your own initiative.
- MCP tool:
remix_delete_preset. Catalog: reach it withfind_actionsandrun_write_action, or turn on the full toolset. - REST:
POST /v1/remix/delete-preset - CLI:
xholic remix delete-preset - Scope:
write. Destructive: it can’t be taken back - Plan: Every plan, including the trial
- Cost: Free.
- Rate limit bucket:
write
Input
| Field | Type | Required | Description |
|---|---|---|---|
presetId |
string (uuid) | Yes | |
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. |
