launch 5 tools
solana_launch_execute_buy execute
Buy a pump.fun coin
Buy a pump.fun coin with a bounded SOL budget and submit it. amount is the maximum SOL the wallet may spend, in lamports, including Pump's trading fees — it is never a token quantity, and the same maximum is encoded in the transaction, so nothing more can ever be spent. Network fees and any account rent are reported separately and sit outside that budget. The executor re-reads live curve state and derives the minimum tokens the program must deliver from it and maxSlippageBps; that minimum is enforced on chain, so a curve that moves between planning and landing reverts the buy instead of filling it badly. The exact transaction that will be submitted is simulated first unless skipSimulation is true, which bypasses only the simulation and never the validation or that minimum. A completed curve, a curve quoted in anything but SOL, a missing curve, an unsupported mint extension or an underfunded wallet sends nothing, and the buy is never rerouted to PumpSwap or Jupiter. An ambiguous submission keeps its signature in a structured failure and is never re-sent or rebuilt; confirmation is not proof of the requested fill. The curve-side exit is solana_launch_execute_sell, which stops working once the curve completes. Use solana_launch_simulate_buy to preview.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the coin to buy, whose bonding curve must be live |
amount | string | yes | Maximum SOL to spend in lamports, including Pump trading fees; never a token amount |
maxSlippageBps | integer | no | How far below the quoted tokens the enforced minimum may sit. Default 50 (0.5%). default 50 · 1 to 9999 |
skipSimulation | boolean | no | Skip the pre-send simulation. Validation and the enforced minimum still apply. default false |
solana_launch_execute_sell execute
Sell a pump.fun coin
Sell a pump.fun coin back to its bonding curve and submit it. amount is the exact quantity of the coin to sell, in its base units — it is never a SOL figure. The executor re-reads live curve state and derives the least SOL the program must return from it and maxSlippageBps; that minimum is enforced on chain, so a curve that moves between planning and landing reverts the sell instead of filling it badly. Network fees are reported separately. The exact transaction that will be submitted is simulated first unless skipSimulation is true, which bypasses only the simulation and never the validation or that minimum. A completed curve, a curve quoted in anything but SOL, a missing curve, an unsupported mint extension, or a wallet holding less of the coin than the sell asks for sends nothing, and the sell is never rerouted to PumpSwap or Jupiter. An ambiguous submission keeps its signature in a structured failure and is never re-sent or rebuilt; confirmation is not proof of the requested fill. This is the curve-side exit for a coin bought with solana_launch_execute_buy. Use solana_launch_simulate_sell to preview.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the coin to sell, whose bonding curve must be live |
amount | string | yes | Exact quantity of the coin to sell, in its base units; never a SOL amount |
maxSlippageBps | integer | no | How far below the quoted SOL the enforced minimum may sit. Default 50 (0.5%). default 50 · 1 to 9999 |
skipSimulation | boolean | no | Skip the pre-send simulation. Validation and the enforced minimum still apply. default false |
solana_launch_get_curve read
Get bonding curve state
Read the current state of a pump.fun bonding curve for one launched token mint: whether the curve is complete, its sold progress in basis points (0-10000, floored), and its virtual SOL and token reserves as exact base-unit integer strings. progressBps is floored to the integer basis point below the exact value. Only SOL-paired curves are supported — a curve trading against any other quote asset fails with UnsupportedQuoteAsset. complete is the on-chain curve flag only; it does not prove a PumpSwap migration pool exists. Read-only: nothing is bought, sold, signed, or sent, and there is no Jupiter fallback.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the launched token whose bonding curve to read |
solana_launch_simulate_buy simulate
Simulate a pump.fun buy
Simulate buying a pump.fun coin with a bounded SOL budget without submitting anything. amount is the maximum SOL the wallet may spend, in lamports, including Pump's trading fees — it is never a token quantity, and the same maximum is encoded in the transaction, so nothing more can ever be spent. Network fees and any account rent are reported separately and sit outside that budget. The executor re-reads live curve state and derives the minimum tokens the program must deliver from it and maxSlippageBps; that minimum is enforced on chain, so a curve that moves reverts the buy instead of filling it badly. A completed curve, a curve quoted in anything but SOL, a missing curve, an unsupported mint extension or an underfunded wallet is reported without building or sending, and the buy is never rerouted to PumpSwap or Jupiter. Nothing is ever signed for submission, and a later execute re-plans and may differ. The curve-side exit is solana_launch_simulate_sell / solana_launch_execute_sell, which stop working once the curve completes. Use solana_launch_execute_buy to send.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the coin to buy, whose bonding curve must be live |
amount | string | yes | Maximum SOL to spend in lamports, including Pump trading fees; never a token amount |
maxSlippageBps | integer | no | How far below the quoted tokens the enforced minimum may sit. Default 50 (0.5%). default 50 · 1 to 9999 |
solana_launch_simulate_sell simulate
Simulate a pump.fun sell
Simulate selling a pump.fun coin back to its bonding curve without submitting anything. amount is the exact quantity of the coin to sell, in its base units — it is never a SOL figure. The executor re-reads live curve state and derives the least SOL the program must return from it and maxSlippageBps; that minimum is enforced on chain, so a curve that moves reverts the sell instead of filling it badly. Network fees are reported separately. A completed curve, a curve quoted in anything but SOL, a missing curve, an unsupported mint extension, or a wallet holding less of the coin than the sell asks for is reported without building or sending, and the sell is never rerouted to PumpSwap or Jupiter. Nothing is ever signed for submission, and a later execute re-plans and may differ. Use solana_launch_execute_sell to send.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the coin to sell, whose bonding curve must be live |
amount | string | yes | Exact quantity of the coin to sell, in its base units; never a SOL amount |
maxSlippageBps | integer | no | How far below the quoted SOL the enforced minimum may sit. Default 50 (0.5%). default 50 · 1 to 9999 |
lend 6 tools
solana_lend_execute_deposit execute
Execute Kamino deposit
Supply an exact underlying amount into the one configured Kamino lending market from the configured signer wallet and wait for confirmation. Signs and submits a real transaction that moves funds. amount is the exact deposit in base units of the mint's underlying token; the transaction encodes exactly that amount and cannot spend more. The executor re-validates the configured market and reserve against chain state and targets the signer's plain (vanilla) supply obligation — initializing it and its user metadata when absent (rent is the signer's), never touching borrowing, leverage or elevation-group obligations, and refusing an obligation that already carries borrows. Simulates the exact transaction first and sends nothing when simulation, validation, or the blockhash lifetime fails; skipSimulation bypasses only the simulation, never validation. Never re-sends or rebuilds after an ambiguous submission — the signature is reported in the structured failure, and confirmation alone is not proof of the requested economic fill. Use solana_lend_simulate_deposit to preview without sending. Live funded deposits stay an operator QA step until the matching withdrawal twin exists and is checked.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Underlying token mint to supply in the configured Kamino market |
amount | string | yes | Exact underlying amount to deposit, in base units as a positive integer string |
skipSimulation | boolean | no | Skip the pre-send simulation of the exact transaction. Defaults to false default false |
solana_lend_execute_withdraw execute
Execute Kamino withdrawal
Redeem fixed collateral units chosen from a target underlying base-unit amount at the read-time rate. The target is NOT a guaranteed minimum or exact on-chain output: the reserve can change before inclusion. Check the estimated output and encoded collateral in simulation; read the wallet and position after execution. Simulates before sending unless skipSimulation is true; failed simulations send nothing. Never retries ambiguous sends.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Underlying token mint in the configured Kamino market |
amount | string | yes | Target underlying base units at the read-time rate. Redemption encodes fixed collateral units; actual underlying output can differ, with no on-chain minimum |
skipSimulation | boolean | no | Skip pre-send simulation; never skip validation default false |
solana_lend_get_position read
Get a Kamino supply position
Read one owner's total supplied amount for an underlying token in the configured Kamino market. The exact base-unit amount is converted from collateral tokens at the reserve exchange rate and rounded down once after aggregation. positions lists each distinct contributing obligation; debt is never netted from supply. A known reserve with no supply returns zero. owner defaults to the configured signer. Read-only: nothing is deposited, withdrawn, signed, or sent.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Underlying token mint in the configured Kamino market |
owner | string | no | Supply owner. Defaults to the configured signer wallet when omitted |
solana_lend_get_reserve read
Get Kamino reserve rates and liquidity
Read one token's reserve in the configured Kamino lending market (Main Market by default): the exact reserve address, its supply and borrow APYs as annual fractional decimals excluding incentive rewards, and its available liquidity as the underlying token's exact base-unit amount. Returns the market and reserve identities so later reads and execution stay in the same market; a mint the configured market has no reserve for fails ReserveUnavailable rather than answering from a different market. Rates are observations and move every slot — they are not promised returns. Read-only: nothing is deposited, withdrawn, signed, or sent.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Base58 mint of the token whose reserve to read in the configured market |
solana_lend_simulate_deposit simulate
Simulate Kamino deposit
Simulate supplying an exact underlying amount into the one configured Kamino lending market without submitting anything. amount is the exact deposit in base units of the mint's underlying token — the same exact amount is encoded in the transaction, so nothing more can ever be spent. The executor re-validates the configured market and reserve against chain state, targets the signer's plain (vanilla) supply obligation — initializing it and its user metadata when absent, never touching borrowing, leverage or elevation-group obligations — and simulates exactly the transaction it would send, reporting compute units, program logs, the predicted collateral receipt at the read-time reserve exchange rate, and the rent and transaction fee the operation would pay. A missing or underfunded source token account, an unsupported mint extension, or any validation failure is reported without building or sending. Nothing is ever signed for submission, and a later execute re-plans and may differ. Use solana_lend_execute_deposit to send.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Underlying token mint to supply in the configured Kamino market |
amount | string | yes | Exact underlying amount to deposit, in base units as a positive integer string |
solana_lend_simulate_withdraw simulate
Simulate Kamino withdrawal
Simulate redeeming collateral for a target amount of underlying token base units from the signer's plain Kamino supply obligation. The target selects fixed receipt units; output is estimated at the read-time exchange rate, NOT an on-chain minimum. Reject targets that cannot be predicted exactly at that rate or exceed position/liquidity. Does not submit.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Underlying token mint in the configured Kamino market |
amount | string | yes | Target underlying base units at the read-time rate. Redemption encodes fixed collateral units; actual underlying output can differ, with no on-chain minimum |
liquidity 9 tools
solana_liquidity_execute_close_position execute
Close a liquidity position
Close an emptied concentrated-liquidity position and reclaim its rent. raydium (CLMM) refuses while any liquidity, unclaimed fee, or unclaimed reward remains, and burns the position NFT. meteora (DLMM) refuses while any liquidity share remains, so remove them with the withdraw tool first. A meteora position is the PositionV2 account, not an NFT. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position. Submits and waits for confirmation; simulates the exact transaction first unless skipSimulation is true. Use solana_liquidity_simulate_close_position to preview.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. raydium (CLMM) and meteora (DLMM) can close an emptied position; orca fails before any network access |
position | string | yes | Protocol position account to close. On meteora this is the PositionV2 account, never an NFT mint and never the pool |
skipSimulation | boolean | no | Skip the pre-send simulation only default false |
solana_liquidity_execute_deposit execute
Execute position deposit
Add liquidity to one existing Orca, Raydium, or Meteora position from the configured signer and wait for confirmation. Signs and submits a real transaction that moves funds. amountA and amountB are maximum spends in the pool's canonical mint order. Orca and Raydium encode on-chain spend bounds at the quote plus slippage, capped by the budgets. Meteora signs those amounts as the caps and spreads them across the position's existing bins only; if the active bin moved more than ceil(maxSlippageBps / binStep) bins the deposit is refused before send, and that check is not on chain. position is the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account, never an NFT mint. The signer holds the Orca or Raydium position NFT, or owns the Meteora position. New positions and bin-range changes are refused. A missing funding account on a side the quote needs nothing from is created idempotently. Simulates the exact transaction first and sends nothing when simulation, validation, or the blockhash lifetime fails; skipSimulation bypasses only the simulation, never validation. Use solana_liquidity_simulate_deposit to preview. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. orca (Whirlpools), raydium (CLMM), and meteora (DLMM) deposits are implemented. Opens and closes cover raydium and an empty meteora position |
pool | string | yes | Pool address the position belongs to; the deposit fails typed when the position references a different pool |
position | string | yes | Existing protocol position account: the Whirlpool position PDA, the Raydium personal position, or the Meteora PositionV2 account. Never an NFT mint and never the pool. New positions and bin-range changes are refused |
amountA | string | yes | Maximum token A spend, in base units of the pool's canonical token A mint; unused funds stay in the wallet |
amountB | string | yes | Maximum token B spend, in base units of the pool's canonical token B mint; unused funds stay in the wallet |
maxSlippageBps | integer | no | Price-movement tolerance in basis points, 0..9999. Default 50 (0.5%). Orca and Raydium encode on-chain spend bounds at the quote plus this tolerance, capped by the budgets. Meteora caps spend at the signed token amounts and refuses before send if the active bin moved more than ceil(maxSlippageBps / binStep) bins; that drift check is not on chain default 50 · 0 to 9999 |
wrapSol | boolean | no | Wrap exactly the native SOL the quote is short on a wSOL side, in this same transaction, and unwrap the remainder when this transaction created the account. Leave false when the wSOL side is already funded default false |
skipSimulation | boolean | no | Skip the pre-send simulation of the exact transaction. Defaults to false; bypassing only skips simulation, never validation default false |
solana_liquidity_execute_open_position execute
Open a liquidity position
Open a new concentrated-liquidity position at a range you choose. raydium (CLMM): tickLower and tickUpper must each be a multiple of the pool's tick spacing; an unaligned range is refused rather than rounded. amountA and amountB are maximum spends in base units, never targets. The position NFT is generated for this transaction. meteora (DLMM): pass lowerBinId and width. Width must be an integer from 1 to 70; an illegal width is refused, never clamped. The open is empty (initialize_position); add liquidity afterwards with the deposit tools. The position account is a fresh keypair and its pubkey is returned on the execute result. Rent is the signer's and is reclaimed by closing. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position. Submits and waits for confirmation; simulates the exact transaction first unless skipSimulation is true. Use solana_liquidity_simulate_open_position to preview.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. raydium (CLMM) and meteora (DLMM) can open a position; orca fails before any network access |
pool | string | yes | Pool to open the position in. On meteora this is the LbPair address |
tickLower | integer | no | Raydium lower tick, inclusive. Must be a multiple of the pool's tick spacing -9007199254740991 to 9007199254740991 |
tickUpper | integer | no | Raydium upper tick, exclusive. Must be a multiple of the pool's tick spacing -9007199254740991 to 9007199254740991 |
lowerBinId | integer | no | Meteora lower bin id, inclusive. The caller chooses it; solOS does not -9007199254740991 to 9007199254740991 |
width | integer | no | Meteora position width in bins, an integer from 1 to 70. An illegal width is refused, never clamped -9007199254740991 to 9007199254740991 |
amountA | string | no | Raydium maximum token A spend in base units; never a target |
amountB | string | no | Raydium maximum token B spend in base units; never a target |
maxSlippageBps | integer | no | Raydium price-movement tolerance in basis points. Ignored by an empty meteora open default 50 · 0 to 9999 |
wrapSol | boolean | no | Wrap exactly the native SOL the quote is short on a wSOL side, in this same transaction, and unwrap the remainder when this transaction created the account. Leave false when the wSOL side is already funded default false |
skipSimulation | boolean | no | Skip the pre-send simulation only default false |
solana_liquidity_execute_withdraw execute
Execute position withdrawal
Remove liquidity from one existing Orca, Raydium, or Meteora position to the configured signer wallet and wait for confirmation. Signs and submits a real transaction that moves funds. The wallet receives token A and token B principal quoted from the position's liquidity at the current price. Fees and rewards are not claimed, so Meteora fee balances stay on the position. bps is the fraction of CURRENT liquidity to remove, 1..10000. Meteora applies that bps independently to each occupied bin; 10000 removes every share on those bins. Fractional shares round down, and a removal that computes to zero liquidity is rejected. Minimum receipts are floor(quote * (10000 - maxSlippageBps) / 10000) and are encoded on chain, so a move that would pay a side under its minimum aborts. Meteora also refuses on chain if the active bin moves more than ceil(maxSlippageBps / binStep) bins, and it does not change the position's bin range. position is the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account, never an NFT mint. The position is never closed. If a receiving token account for a side the position owes does not exist yet, an idempotent create for it is prepended (its rent is distinct from removed principal). Simulates the exact transaction first and sends nothing when simulation, validation, or the blockhash lifetime fails; skipSimulation bypasses only the simulation, never validation. Never re-sends after an ambiguous submission. Use solana_liquidity_simulate_withdraw to preview without sending. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. orca (Whirlpools), raydium (CLMM), and meteora (DLMM) withdrawals are implemented. Opens and closes cover raydium and an empty meteora position |
position | string | yes | Protocol position account: the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account (its owner field). Never an NFT mint and never the pool. The position is not closed and its range is not changed |
bps | integer | yes | Fraction of the position's CURRENT liquidity to remove, in basis points: 1..10000. Meteora applies it independently to each occupied bin. 10000 removes every share. Fractional shares round down; a removal that computes to zero liquidity is rejected 1 to 10000 |
maxSlippageBps | integer | no | Price-movement tolerance in basis points, 0..9999. Default 50 (0.5%). Minimum receipts are floor(quoted principal * (10000 - tolerance) / 10000) and are encoded on chain. The quote is liquidity principal only: Meteora does not claim fees or rewards in this transaction. Meteora also refuses on chain if the active bin moves more than ceil(maxSlippageBps / binStep) bins default 50 · 0 to 9999 |
skipSimulation | boolean | no | Skip the pre-send simulation of the exact transaction. Defaults to false; bypassing only skips simulation, never validation default false |
solana_liquidity_get_position read
Get a concentrated-liquidity LP position
Read one existing concentrated-liquidity LP position on orca (Whirlpools), raydium (CLMM), or meteora (DLMM): its raw liquidity and the underlying token A and token B amounts in base units with the mints' decimals. position is the protocol position account (the Whirlpool position PDA on orca, the PersonalPositionState PDA on raydium, the PositionV2 account on meteora), never an NFT mint and never the pool. On orca and raydium, ownership is custody of the position NFT. On meteora, the position account's owner field must equal the requested owner. A missing, foreign-owned, or corrupt position is a typed error, never a fabricated zero; an owned zero-liquidity position is a successful zero read. owner defaults to the configured signer, so any third party's position can be read by naming its owner. valueUsd is always null. Deposits and withdrawals stay inside the existing bins. Read-only: nothing is deposited, withdrawn, claimed, or signed. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. orca (Whirlpools), raydium (CLMM), and meteora (DLMM) are implemented for this read. Deposits and withdrawals stay inside the position's existing bins. Opens and closes cover raydium and an empty meteora position |
position | string | yes | Protocol position-account address: the Whirlpool position PDA on orca, the PersonalPositionState PDA on raydium, the PositionV2 account on meteora. Never an NFT mint and never the pool |
owner | string | no | Owner to prove against. Orca and Raydium require custody of the position NFT; Meteora matches the position account's owner field. Defaults to the configured signer wallet |
solana_liquidity_simulate_close_position simulate
Simulate closing a liquidity position
Close an emptied concentrated-liquidity position and reclaim its rent. raydium (CLMM) refuses while any liquidity, unclaimed fee, or unclaimed reward remains, and burns the position NFT. meteora (DLMM) refuses while any liquidity share remains, so remove them with the withdraw tool first. A meteora position is the PositionV2 account, not an NFT. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position. Simulates without submitting anything; use solana_liquidity_execute_close_position to send.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. raydium (CLMM) and meteora (DLMM) can close an emptied position; orca fails before any network access |
position | string | yes | Protocol position account to close. On meteora this is the PositionV2 account, never an NFT mint and never the pool |
solana_liquidity_simulate_deposit simulate
Simulate position deposit
Simulate adding liquidity to one existing Orca, Raydium, or Meteora position without submitting anything. amountA and amountB are maximum spends in the pool's canonical mint order. Orca and Raydium encode on-chain spend bounds at the quote plus slippage, capped by the budgets. Meteora signs those amounts as the caps and spreads them across the position's existing bins only; if the active bin moved more than ceil(maxSlippageBps / binStep) bins the deposit is refused before send, and that check is not on chain. position is the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account, never an NFT mint. The signer holds the Orca or Raydium position NFT, or owns the Meteora position. New positions and bin-range changes are refused. A missing funding account on a side the quote needs nothing from is created idempotently. The executor builds and simulates exactly the transaction it would send. Nothing is sent. Use solana_liquidity_execute_deposit to send. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. orca (Whirlpools), raydium (CLMM), and meteora (DLMM) deposits are implemented. Opens and closes cover raydium and an empty meteora position |
pool | string | yes | Pool address the position belongs to; the deposit fails typed when the position references a different pool |
position | string | yes | Existing protocol position account: the Whirlpool position PDA, the Raydium personal position, or the Meteora PositionV2 account. Never an NFT mint and never the pool. New positions and bin-range changes are refused |
amountA | string | yes | Maximum token A spend, in base units of the pool's canonical token A mint; unused funds stay in the wallet |
amountB | string | yes | Maximum token B spend, in base units of the pool's canonical token B mint; unused funds stay in the wallet |
maxSlippageBps | integer | no | Price-movement tolerance in basis points, 0..9999. Default 50 (0.5%). Orca and Raydium encode on-chain spend bounds at the quote plus this tolerance, capped by the budgets. Meteora caps spend at the signed token amounts and refuses before send if the active bin moved more than ceil(maxSlippageBps / binStep) bins; that drift check is not on chain default 50 · 0 to 9999 |
wrapSol | boolean | no | Wrap exactly the native SOL the quote is short on a wSOL side, in this same transaction, and unwrap the remainder when this transaction created the account. Leave false when the wSOL side is already funded default false |
solana_liquidity_simulate_open_position simulate
Simulate opening a liquidity position
Open a new concentrated-liquidity position at a range you choose. raydium (CLMM): tickLower and tickUpper must each be a multiple of the pool's tick spacing; an unaligned range is refused rather than rounded. amountA and amountB are maximum spends in base units, never targets. The position NFT is generated for this transaction. meteora (DLMM): pass lowerBinId and width. Width must be an integer from 1 to 70; an illegal width is refused, never clamped. The open is empty (initialize_position); add liquidity afterwards with the deposit tools. The position account is a fresh keypair and its pubkey is returned on the execute result. Rent is the signer's and is reclaimed by closing. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position. Simulates without submitting anything; use solana_liquidity_execute_open_position to send.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. raydium (CLMM) and meteora (DLMM) can open a position; orca fails before any network access |
pool | string | yes | Pool to open the position in. On meteora this is the LbPair address |
tickLower | integer | no | Raydium lower tick, inclusive. Must be a multiple of the pool's tick spacing -9007199254740991 to 9007199254740991 |
tickUpper | integer | no | Raydium upper tick, exclusive. Must be a multiple of the pool's tick spacing -9007199254740991 to 9007199254740991 |
lowerBinId | integer | no | Meteora lower bin id, inclusive. The caller chooses it; solOS does not -9007199254740991 to 9007199254740991 |
width | integer | no | Meteora position width in bins, an integer from 1 to 70. An illegal width is refused, never clamped -9007199254740991 to 9007199254740991 |
amountA | string | no | Raydium maximum token A spend in base units; never a target |
amountB | string | no | Raydium maximum token B spend in base units; never a target |
maxSlippageBps | integer | no | Raydium price-movement tolerance in basis points. Ignored by an empty meteora open default 50 · 0 to 9999 |
wrapSol | boolean | no | Wrap exactly the native SOL the quote is short on a wSOL side, in this same transaction, and unwrap the remainder when this transaction created the account. Leave false when the wSOL side is already funded default false |
solana_liquidity_simulate_withdraw simulate
Simulate position withdrawal
Simulate removing liquidity from one existing Orca, Raydium, or Meteora position without submitting anything. The wallet would receive token A and token B principal quoted from the position's liquidity at the current price. Fees and rewards are not claimed, so a Meteora withdrawal does not pay fee balances. bps is the fraction of CURRENT liquidity to remove, 1..10000. Meteora applies that bps independently to each occupied bin; 10000 removes every share on those bins. Fractional shares round down, and a removal that computes to zero liquidity is rejected. Minimum receipts are floor(quote * (10000 - maxSlippageBps) / 10000) and are encoded on chain. Meteora also refuses on chain if the active bin moves more than ceil(maxSlippageBps / binStep) bins, and it does not change the position's bin range. position is the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account, never an NFT mint. The position is never closed. If a receiving token account for a side the position owes does not exist yet, an idempotent create for it is prepended (its rent is distinct from removed principal). The executor builds and simulates exactly the transaction it would send. Nothing is sent. Use solana_liquidity_execute_withdraw to send. Supported venues: point reads orca, raydium and meteora, deposits orca, raydium and meteora, withdrawals orca, raydium and meteora, owner enumeration orca, raydium and meteora; opens and closes raydium and an empty meteora position.
| Argument | Type | Required | Description |
|---|
protocol | orca | meteora | raydium | yes | Liquidity protocol. orca (Whirlpools), raydium (CLMM), and meteora (DLMM) withdrawals are implemented. Opens and closes cover raydium and an empty meteora position |
position | string | yes | Protocol position account: the Whirlpool PDA, the Raydium personal position, or the Meteora PositionV2 account (its owner field). Never an NFT mint and never the pool. The position is not closed and its range is not changed |
bps | integer | yes | Fraction of the position's CURRENT liquidity to remove, in basis points: 1..10000. Meteora applies it independently to each occupied bin. 10000 removes every share. Fractional shares round down; a removal that computes to zero liquidity is rejected 1 to 10000 |
maxSlippageBps | integer | no | Price-movement tolerance in basis points, 0..9999. Default 50 (0.5%). Minimum receipts are floor(quoted principal * (10000 - tolerance) / 10000) and are encoded on chain. The quote is liquidity principal only: Meteora does not claim fees or rewards in this transaction. Meteora also refuses on chain if the active bin moves more than ceil(maxSlippageBps / binStep) bins default 50 · 0 to 9999 |
market 6 tools
solana_market_ask_iris read
Ask Iris about the market
Ask Iris for current market context, catalysts, and risks behind one market question, answered from live social and market intelligence. Every call spends Elfa API credits and the response reports how many. Links appear only when the provider includes them.
| Argument | Type | Required | Description |
|---|
question | string | yes | One market question, e.g. what changed for SOL in the last 24 hours |
solana_market_get_event_summary read
Summarize market events
Summarize recent events matching keywords, with source links supplied by Elfa. Costs 5 Elfa credits per call, available on Free. May take up to 180 seconds or return no summaries for a quiet window.
| Argument | Type | Required | Description |
|---|
keywords | string[] | yes | One to ten search terms, e.g. [Solana, SOL] |
timeWindow | 30m | 1h | 4h | 24h | 7d | 30d | no | Lookback window; defaults to 24h default "24h" |
searchType | and | or | no | Match all terms (and) or any term (or) default "or" |
solana_market_get_price read
Get token USD price
Get the current USD price of one token mint from Jupiter's price feed. Returns the price as an exact decimal string and the local receipt time. A mint Jupiter does not price is reported as PriceUnavailable, never as a zero price.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Token mint address to price in USD |
solana_market_get_token read
Get token metadata
Read verified on-chain metadata for one token mint: name, symbol, decimals, and logoUri. Covers standard SPL mints with Metaplex metadata and Token-2022 mints with metadata extensions or a metadata pointer. An address that does not exist or is not a mint account fails UnknownToken; a valid mint whose metadata is absent or unreadable fails TokenMetadataUnavailable, so the ticker is never invented. Wrapped SOL and USDC fall back to their canonical names only after the mint account, owner, and decimals were verified on chain. logoUri is null unless a real logo URI lives on chain; the metadata JSON uri is not a logo and no off-chain URL is ever fetched.
| Argument | Type | Required | Description |
|---|
mint | string | yes | Token mint address to read on-chain metadata for |
solana_market_get_token_news read
Find token news
Find recent news-source posts about CoinGecko coin IDs. Returns X post links, timestamps and engagement, not article or tweet text. Consumes Elfa API credits, available on Free.
| Argument | Type | Required | Description |
|---|
coinIds | string[] | yes | CoinGecko coin IDs, e.g. [solana]; not tickers or mint addresses |
timeWindow | 30m | 1h | 4h | 24h | 7d | 30d | no | Lookback window; defaults to 24h default "24h" |
page | integer | no | Page number, starting at 1 default 1 · 1 to 9007199254740991 |
pageSize | integer | no | Results per page, 1–50 default 10 · 1 to 50 |
solana_market_get_trending_tokens read
Find trending tokens
Find tokens gaining social attention over a time window, ranked by mentions. Returns counts, not prices or sentiment. Elfa's experimental endpoint; consumes API credits, available on Free.
| Argument | Type | Required | Description |
|---|
timeWindow | 30m | 1h | 4h | 24h | 7d | 30d | no | Lookback window; defaults to 24h default "24h" |
page | integer | no | Page number, starting at 1 default 1 · 1 to 9007199254740991 |
pageSize | integer | no | Results per page, 1–50 default 10 · 1 to 50 |
minMentions | integer | no | Minimum mentions per token default 5 · 1 to 9007199254740991 |
perp 12 tools
solana_perp_execute_close execute
Submit a reduce-only Phoenix IOC close
Submit one reduce-only IOC close for the current signed position; confirmation is not proof it filled. Read residual exposure.
| Argument | Type | Required | Description |
|---|
market | string | yes | Phoenix perpetual market symbol, e.g. SOL |
limitPriceUsd | string | yes | Finite minimum sell or maximum buy price in USD per base token |
solana_perp_execute_deposit_collateral execute
Deposit USDC into Phoenix collateral
Deposit exact USDC input from the current wallet, then report actual balance changes. Output is not guaranteed; never opens an order.
| Argument | Type | Required | Description |
|---|
amount | string | yes | Exact USDC base units to debit from the configured wallet; output is estimated, not guaranteed |
solana_perp_execute_onboard_trader execute
Enroll current wallet with Phoenix
Explicitly register and activate the current wallet's Phoenix trader after simulation. Does not fund the trader or open a position.
No arguments.
solana_perp_execute_open execute
Submit a bounded Phoenix IOC open
Submit a one-shot Phoenix Perps IOC open after preflight; confirmation does not guarantee a fill. Fund and verify the close path first.
| Argument | Type | Required | Description |
|---|
market | string | yes | Phoenix perpetual market symbol, e.g. SOL |
side | long | short | yes | Long to buy or short to sell |
notionalUsd | string | yes | Maximum order notional in integer 1e6 USD units |
maxLeverage | integer | yes | Maximum requested leverage (1 through 100) 1 to 100 |
limitPriceUsd | string | yes | Finite maximum buy or minimum sell price in USD per base token |
solana_perp_execute_withdraw_collateral execute
Withdraw Phoenix collateral to your wallet
Remove an exact Phoenix-token input only when all markets are flat and settled, then report actual wallet USDC receipt (not guaranteed).
| Argument | Type | Required | Description |
|---|
amount | string | yes | Exact Phoenix collateral-token base units to debit; wallet USDC receipt is estimated, not guaranteed |
solana_perp_get_onboarding_status read
Check Phoenix trader enrollment
Check whether the current wallet's Phoenix trader can place orders and deposit collateral.
No arguments.
solana_perp_get_position read
Get Phoenix perp position
Read one Phoenix perp position with an explicit long/short/flat side, absolute base exposure, and the trader account's signed USD equity (null when it cannot be justified). Flat means exactly zero; a valid market with no account is a zero-position success, not an error.
| Argument | Type | Required | Description |
|---|
market | string | yes | Perp market symbol, e.g. SOL or SOL-PERP (normalized to the exchange symbol) |
owner | string | no | Trader address to read. Defaults to the configured signer wallet |
solana_perp_simulate_close simulate
Simulate a reduce-only Phoenix IOC close
Preview closing an existing Phoenix Perps position with a finite limit, without sending an order.
| Argument | Type | Required | Description |
|---|
market | string | yes | Phoenix perpetual market symbol, e.g. SOL |
limitPriceUsd | string | yes | Finite minimum sell or maximum buy price in USD per base token |
solana_perp_simulate_deposit_collateral simulate
Simulate funding Phoenix collateral
Preview an explicit fixed-input USDC deposit for the current Phoenix trader. The credited amount is only an estimate.
| Argument | Type | Required | Description |
|---|
amount | string | yes | Exact USDC base units to debit from the configured wallet; output is estimated, not guaranteed |
solana_perp_simulate_onboard_trader simulate
Simulate Phoenix trader enrollment
Preview registration and trading activation of the current wallet's default Phoenix trader without submitting.
No arguments.
solana_perp_simulate_open simulate
Simulate a bounded Phoenix IOC open
Preview a price- and leverage-bounded Phoenix Perps position open without sending an order or funding collateral.
| Argument | Type | Required | Description |
|---|
market | string | yes | Phoenix perpetual market symbol, e.g. SOL |
side | long | short | yes | Long to buy or short to sell |
notionalUsd | string | yes | Maximum order notional in integer 1e6 USD units |
maxLeverage | integer | yes | Maximum requested leverage (1 through 100) 1 to 100 |
limitPriceUsd | string | yes | Finite maximum buy or minimum sell price in USD per base token |
solana_perp_simulate_withdraw_collateral simulate
Simulate Phoenix collateral removal
Preview an explicit fixed Phoenix-token input withdrawal to the current wallet's USDC account, after all-market risk checks.
| Argument | Type | Required | Description |
|---|
amount | string | yes | Exact Phoenix collateral-token base units to debit; wallet USDC receipt is estimated, not guaranteed |