magicblock transfer
magicblock_transferBuild an unsigned SPL token transfer (public or private) through an Ephemeral Rollup. Supports base/ephemeral source and destination, delayed settlement, split transfers, and gasless mode. Private mode defaults: minDelayMs=0, maxDelayMs=0, split=1 — override for delayed or split settlements. Then use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction — or use sap_payments_finalize_transaction for 1-call preview+sign+submit (hosted mode). Builder fee applies.
SAP MCP execution guidance: Intent: local-signer write workflow. Pricing: paid builder; estimate first, then pay/build and finalize unsigned transactions locally when returned. Routing: paid hosted call; call sap_estimate_tool_cost first, then use sap_payments_call_paid_tool if the runtime cannot handle x402 natively. Signer boundary: hosted reads/builders never receive keypair bytes; value-moving results must be finalized locally when signing is required.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient wallet pubkey | |
| from | Yes | Sender wallet pubkey | |
| memo | No | Optional memo appended to the transaction | |
| mint | Yes | SPL mint pubkey | |
| split | No | Private only. Number of queue entries to split across (1-15, default 1) | |
| amount | Yes | Base-unit amount to transfer (integer, minimum 1) | |
| legacy | No | Skip lookup-table compilation, return a legacy transaction (default false) | |
| cluster | No | Cluster: 'mainnet', 'devnet', or custom RPC URL | |
| gasless | No | When true, uses configured sponsor as fee payer (default false) | |
| authToken | No | Bearer token from login (required for private transfers) | |
| toBalance | Yes | Where the recipient should receive funds | |
| validator | No | Optional ER validator pubkey | |
| maxDelayMs | No | Private only. Latest (ms) the queued transfer may settle (<= 600000) | |
| minDelayMs | No | Private only. Earliest (ms) the queued transfer may settle. Default '0' | |
| visibility | Yes | 'public' = transparent SPL transfer, 'private' = routed through Private ER with delayed+split settlement | |
| clientRefId | No | Private only. Encrypted client reference ID for payment confirmation | |
| fromBalance | Yes | Where the sender's balance is held | |
| initIfMissing | No | Initialize transfer queue if missing (default true) | |
| initAtasIfMissing | No | Initialize recipient ATA if missing (default true) | |
| initVaultIfMissing | No | Initialize vault if missing (default false). WARNING: when legacy=true, setting this to true can exceed the 1232-byte legacy transaction limit and produce TRANSACTION_TOO_LARGE errors. Prefer v0 (legacy=false) when vault init is needed. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | MCP content blocks returned to the caller. | |
| isError | No | True when the tool result represents an application-level error. |