payManaCost
Sent while the player pays a spell or ability’s mana cost interactively —
tapping lands, activating mana abilities, spending from the floating pool, or
paying alternative costs such as delve. Every available step is one entry in
actions; the client sends incremental actions by echoing an entry’s id
and the engine re-sends an updated payManaCost prompt until the cost is met,
then the client sends a final pay.

Arguments
Section titled “Arguments”input.type is "payManaCost". The remaining fields:
interface PayManaCostInput { presentation: PromptPresentation; cardId: string; cardName: string; manaCost: string; canConfirmFromPool: boolean; actions: Array<PaymentAction>;}#[serde(rename_all = "camelCase")]pub struct PayManaCostInput { pub presentation: PromptPresentation, pub card_id: String, pub card_name: String, pub mana_cost: String, pub can_confirm_from_pool: bool, pub actions: Vec<PaymentAction>,}
References: PaymentAction , PromptPresentation
Response
Section titled “Response”type PayManaCostOutput = | { type: "act"; actionId: string } | { type: "pay"; auto: boolean } | { type: "cancel" };Send { type: "act", actionId } with the id of an entry in actions to take
an incremental step — tapping a mana source, untapping one (undoMana),
delving/un-delving a graveyard card, or paying life for a Phyrexian cost
(payLife) — and the engine answers with an updated payManaCost prompt. The
client never builds an actionId; it only echoes one the prompt offered. Send
{ type: "pay", auto } to finalize (auto: true lets the engine auto-tap the
remaining sources), or cancel to back out of the payment entirely.
Example
Section titled “Example”{ "promptId": 7, "decidingPlayerId": "player-0", "input": { "type": "payManaCost", "cardId": "stack-3", "cardName": "Cryptic Command", "manaCost": "{1}{U}{U}{U}", "canConfirmFromPool": false, "actions": [ { "id": "tap:perm-9:0", "type": "activateAbility", "cardId": "perm-9", "abilityIndex": 0, "description": "{T}: Add {U}.", "isManaAbility": true, "producedMana": [{ "color": "U", "amount": 1 }] } ] }}{ "kind": "response", "promptId": 7, "action": { "type": "payManaCost", "output": { "type": "act", "actionId": "tap:perm-9:0" } }}