q402_bridge_send
Bridge USDC across Ethereum, Avalanche, and Arbitrum via Chainlink CCIP, with sandbox preview and two-phase consent for live execution.
Instructions
Execute a Chainlink CCIP USDC bridge across the 3-chain triangle (eth/avax/arbitrum) on behalf of the user's server-managed Agentic Wallet (Mode C). Sandbox-by-default - returns a synthetic messageId unless sandbox: false is passed AND Q402_ENABLE_REAL_PAYMENTS=1 AND a live Multichain API key is configured. The server signs ccipSend with the Agent Wallet's encrypted PK, auto-funds source-chain gas from the user's Gas Tank, and debits both the auto- fund cost and the CCIP fee per the bridge's settled receipt. TWO-PHASE CONSENT - a LIVE bridge (sandbox: false) refuses to execute unless BOTH confirm: true AND a matching consentToken are set. Call it first WITHOUT consentToken to get a preview (src, dst, amount, fee token) plus a consentToken; show that to the user, get explicit approval, THEN re-call with sandbox: false, confirm: true, AND that consentToken. The token is re-derived from the bridge about to run, so the previewed bridge can't be swapped. Never fabricate a token. Recommended flow: q402_bridge_quote first → preview + confirm cost with the user → q402_bridge_send with sandbox: false, confirm: true, consentToken. Live mode needs a Multichain subscription; trial keys are rejected. If the bridge returns AGENT_WALLET_DELEGATED, clear the delegation first: server-managed Agent Wallets (Mode C / API key) use the Clear delegation button on the dashboard; local-key modes (Q402_PRIVATE_KEY set) can run q402_clear_delegation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dst | Yes | Destination chain (MUST differ from src). | |
| src | Yes | Source chain. | |
| amount | Yes | USDC amount in raw 6-decimal units (e.g. '1000000' = 1 USDC). Integer string, > 0. | |
| confirm | No | MUST be true to fire a LIVE bridge (ignored in sandbox) - set only after the user explicitly approved this exact bridge in chat. Omit (or false) on a live call to preview without moving funds. | |
| sandbox | No | Sandbox mode (default true). Set to false for a real on-chain bridge. | |
| feeToken | No | Fee token. Default: LINK (~10% cheaper). | |
| walletId | No | Agentic Wallet ID (from q402_agentic_info). Optional - defaults to the owner's default Agent Wallet when omitted. | |
| maxFeeRaw | No | Optional client-side fee cap in raw 18-dec wei. | |
| consentToken | No | Two-phase consent token. Leave unset on the first live call to get a preview + token; re-call with confirm:true AND this token after the user approves. Bound to (src, dst, amount, feeToken) - re-derived server-side-of-the-tool and refused on mismatch. |