Critical-risk tools in VaultPilot MCP
45 of the 189 tools in VaultPilot MCP are classified as critical risk. This page profiles those tools specifically, with recommended policy actions and the attack patterns that target them.
Every operation listed below is an action PolicyLayer recommends controlling at the transport layer. Open any tool to see the full profile, risk score, and YAML policy snippet.
Tools at critical risk
-
prepare_btc_lifi_swapDestructiveBuild an unsigned Bitcoin PSBT-v0 that bridges native BTC to a token on another chain via LiFi's aggregator. LiFi auctions the route across intent solvers (NEAR Intents, Garden,...
-
prepare_btc_rbf_bumpDestructiveBuild a BIP-125 Replace-By-Fee replacement for a stuck mempool BTC tx. Reuses the original tx's exact input set, preserves every recipient verbatim, and shrinks the change outpu...
-
prepare_jito_stakeDestructiveBuild an unsigned Jito stake-pool deposit tx: deposit `amountSol` SOL into Jito's stake pool and receive jitoSOL (Jito's liquid-staking token). Uses the SPL stake-pool program's...
-
prepare_marginfi_initDestructiveOne-time setup: build a tx that creates a deterministic MarginfiAccount PDA under the user's wallet on MarginFi mainnet. Uses `marginfi_account_initialize_pda` so only the walle...
-
prepare_solana_nonce_closeDestructiveTear down a previously-initialized durable-nonce account and return its full balance (~0.00144 SOL) to the main wallet. ix[0] = SystemProgram.nonceAdvance (self-protecting, same...
-
prepare_sunswap_swapDestructiveBuild an unsigned SunSwap V2 same-chain swap on TRON. SunSwap V2 is a Uniswap-V2 fork; this tool routes through the V2 router (TNJVzGqKBWkJxJB5XYSqGAwUTV15U24pPq) using the stan...
-
prepare_uniswap_v3_burnDestructiveBuild an unsigned Uniswap V3 LP burn transaction — destroys the position NFT (irreversible). Hard-refuses unless the position is fully drained: `liquidity == 0` AND `tokensOwed{...
-
prepare_uniswap_v3_mintDestructiveBuild an unsigned Uniswap V3 LP mint transaction — opens a new concentrated-liquidity position on the (tokenA, tokenB, feeTier) pool, bounded by [tickLower, tickUpper]. Up to tw...
-
remove_contactDestructiveRemove a labeled contact. Without `chain`, removes the label from EVERY chain that has it (one device interaction per chain when removing a signed entry). With `chain`, removes ...
-
unregister_btc_multisig_walletDestructiveDrop a registered multi-sig wallet from the local cache. The Ledger device retains the policy HMAC indefinitely (no on-device unregister API), so re-registering with the SAME de...
-
finalize_btc_psbtFinancialFinalize a fully-signed multi-sig PSBT (typically the output of `combine_btc_psbts` once the threshold is met) and extract the broadcast-ready tx hex. Refuses with a per-input b...
-
prepare_aave_borrowFinancialBuild an unsigned Aave V3 borrow transaction (variable rate — stable rate is deprecated and reverts on production markets). The borrower must already have sufficient collateral ...
-
prepare_aave_supplyFinancialBuild an unsigned Aave V3 supply transaction. If an ERC-20 approve() is required first, it is returned as the outer tx and the supply tx is embedded in `.next`. Both must be sig...
-
prepare_aave_withdrawFinancialBuild an unsigned Aave V3 withdraw transaction. Pass `amount: "max"` to withdraw the entire aToken balance.
-
prepare_btc_sendFinancialBuild an unsigned Bitcoin native-send PSBT (segwit/taproot only in Phase 1). Returns a 15-min handle the agent forwards to send_transaction; the Ledger BTC app clear-signs every...
-
prepare_compound_borrowFinancialBuild an unsigned Compound V3 borrow transaction. Compound V3 encodes a borrow as `withdraw(baseToken)` drawn beyond the wallet's supplied balance — the base token is resolved o...
-
prepare_compound_withdrawFinancialBuild an unsigned Compound V3 withdraw transaction. Pass `amount: "max"` to withdraw the full supplied balance.
-
prepare_eigenlayer_depositFinancialBuild an unsigned EigenLayer StrategyManager.depositIntoStrategy transaction. Includes an ERC-20 approve step if needed.
-
prepare_kamino_borrowFinancialBuild a Kamino borrow tx — pulls liquidity from a reserve as debt against the obligation's existing collateral. Refuses if the wallet hasn't run prepare_kamino_init_user; refuse...
-
prepare_kamino_repayFinancialBuild a Kamino repay tx — pays down outstanding debt in the named reserve. Refuses with a clear error if the wallet has no debt in the reserve. The on-chain program clamps repay...
-
prepare_kamino_withdrawFinancialBuild a Kamino withdraw tx — pulls liquidity out of a previously-supplied reserve. Refuses with a clear error if the wallet has no deposit in the named reserve. Health-factor ga...
-
prepare_lido_stakeFinancialBuild an unsigned Lido stake transaction (wraps ETH into stETH via stETH.submit). The tx's value field is the ETH amount to stake.
-
prepare_marginfi_borrowFinancialBuild an unsigned MarginFi BORROW tx against the user's supplied collateral. Pre-flight refuses if the account has zero free collateral. The SDK computes the required oracle-ref...
-
prepare_marginfi_repayFinancialBuild an unsigned MarginFi REPAY tx against outstanding debt in the named bank. Pass `repayAll: true` to repay the full outstanding debt (also clears the balance slot). DURABLE ...
-
prepare_marginfi_supplyFinancialBuild an unsigned MarginFi SUPPLY tx for a given bank (by symbol or mint). Supplies the specified amount of the underlying token into the user's MarginfiAccount position in that...
-
prepare_marginfi_withdrawFinancialBuild an unsigned MarginFi WITHDRAW tx. Withdraws the specified amount (or ALL, via `withdrawAll: true`) from the user's supplied position in the named bank. Pre-flight refuses ...
-
prepare_marinade_stakeFinancialBuild an unsigned Marinade stake tx: deposit `amountSol` SOL into Marinade and receive mSOL (Marinade's liquid-staking token). Uses the Marinade SDK's `marinade.deposit` so the ...
-
prepare_marinade_unstake_immediateFinancialBuild an unsigned Marinade IMMEDIATE liquid-unstake tx: burn `amountMSol` mSOL and receive SOL in the same tx via Marinade's liquidity pool (NOT delayed-unstake / OrderUnstake —...
-
prepare_morpho_borrowFinancialBuild an unsigned Morpho Blue borrow transaction. Requires pre-existing collateral in the market.
-
prepare_morpho_repayFinancialBuild an unsigned Morpho Blue repay transaction. Includes an approve step if needed. Explicit amount only — "max" is not supported.
-
prepare_morpho_supplyFinancialBuild an unsigned Morpho Blue supply transaction — deposits the market's loan token to earn lending yield. Market params (loan/collateral tokens, oracle, IRM, LLTV) are resolved...
-
prepare_morpho_supply_collateralFinancialBuild an unsigned Morpho Blue supplyCollateral transaction — adds collateral to a market. Includes an approve step if needed.
-
prepare_morpho_withdrawFinancialBuild an unsigned Morpho Blue withdraw transaction (withdraws supplied loan token). Explicit amount only — "max" is not supported; query your position first.
-
prepare_morpho_withdraw_collateralFinancialBuild an unsigned Morpho Blue withdrawCollateral transaction — removes collateral from a market to send back to the wallet. Only withdraws the exact amount specified; `"max"` is...
-
prepare_native_sendFinancialBuild an unsigned native-coin send transaction (ETH on Ethereum/Arbitrum). Pass a human-readable amount like "0.5".
-
prepare_native_stake_withdrawFinancialBuild an unsigned native-stake withdraw tx. Pulls `amountSol` SOL (or 'max' for the full lamport balance) from an inactive stake account back into the wallet. 'max' closes the a...
-
prepare_rocketpool_stakeFinancialBuild an unsigned Rocket Pool stake transaction (RocketDepositPool.deposit() payable, mints rETH at the current exchange rate). Ethereum mainnet only — rETH on L2s is bridged an...
-
prepare_safe_tx_proposeFinancialPropose a new Safe (Gnosis Safe) multisig transaction. Wraps an inner action — either a previous prepare_*'s `handle` (recommended; pulls to/value/data from server-side state) O...
-
prepare_tron_claim_rewardsFinancialBuild an unsigned TRON WithdrawBalance transaction that claims accumulated voting rewards to the owner's balance. TRON enforces a 24-hour cooldown between claims — TronGrid will...
-
prepare_tron_lifi_swapFinancialBuild an unsigned LiFi-routed cross-chain bridge with TRON as the source chain. User signs a TRON tx via Ledger over USB; the bridge protocol delivers tokens on the destination ...
-
prepare_tron_native_sendFinancialBuild an unsigned TRON native TRX send transaction via TronGrid's /wallet/createtransaction. Returns a human-readable preview + opaque handle. Forward the handle via `send_trans...
-
prepare_tron_withdraw_expire_unfreezeFinancialBuild an unsigned TRON WithdrawExpireUnfreeze transaction — sweeps every matured unfreeze slice (those whose 14-day cooldown elapsed) back to liquid TRX. No amount needed; the c...
-
prepare_uniswap_swapFinancialPrepare a direct Uniswap V3 swap (bypasses LiFi aggregator). Use this ONLY when the user explicitly asks for Uniswap — otherwise default to `prepare_swap` which compares routes ...
-
prepare_uniswap_v3_collectFinancialBuild an unsigned Uniswap V3 LP collect transaction — harvests every token the position is owed (decreased liquidity from prior `prepare_uniswap_v3_decrease_liquidity` calls + a...
-
send_transactionFinancialForward an already-prepared transaction to the Ledger device for user signing. Routes on the handle's origin: EVM handles (prepare_aave_*, prepare_compound_*, prepare_swap, prep...
Attacks that target this class
Critical-risk tools in any server share these documented attack patterns. Each links to the full case and the defensive policy.