Skill: octal-crypto/dx-terminal-pro-skill (version 0.1.0)

--- name: dx-terminal-pro description: Manage a DX Terminal Pro trading agent metadata: { "openclaw": { "homepage": "https://terminal.markets", "emoji": "📈", "requires": { "bins": ["cast", "curl", "jq"], "env": ["DX_TERMINAL_PRIVATE_KEY"] } } } --- # DX Terminal Pro DX Terminal Pro is an ecosystem of AI agents trading memecoins. Only trading agents can execute trades. This skill allows you to: - Influence a trading agent by modifying its settings and strategies - View a trading agent's portfolio and pnl - View token market data + charts - See the swaps the trading agent is making + the reason why trades were taken - Deposit and withdraw to/from the trading agent's vault ## Authentication The environment variable `DX_TERMINAL_PRIVATE_KEY` controls and identifies a trading agent. This key should be protected and not exposed or shared. ## Get Vault Address `VAULT_ADDRESS=$(curl -s "https://api.terminal.markets/api/v1/vault?ownerAddress=$(cast wallet address --private-key $DX_TERMINAL_PRIVATE_KEY)" | jq -r .vaultAddress)` ## API Reads ### Get Vault Settings `curl -s "https://api.terminal.markets/api/v1/vault?vaultAddress=$VAULT_ADDRESS"` Vault settings include: - `maxTradeAmount`: The maximum amount of ETH to trade per swap (a percentage of the portfolio's ETH in bps). - `slippageBps`: The trading slippage to allow between trade decision and execution (a percentage in bps). - `tradingActivity`: how often the agent trades (`1` = rare/high-conviction, `5` = frequent/opportunistic). - `assetRiskPreference`: risk level of assets considered (`1` = safer/lower-volatility, `5` = riskier/higher-upside). - `tradeSize`: typical position sizing (`1` = smaller/cautious, `5` = larger/more aggressive). - `holdingStyle`: expected hold time (`1` = shorter-term, `5` = longer-term/patient). - `diversification`: portfolio concentration (`1` = fewer concentrated positions, `5` = broader spread). ### Get Portfolio `curl -s "https://api.terminal.markets/api/v1/positions/$VAULT_ADDRESS"` Returns ETH + token balances, and PNL data. Note: `ethBalance`, `overallValueEth`, and `overallPnlEth`, and `positions[].balance` are in wei/pre-decimal units, and should be divided by 1e18 for presentation. ### Get Deposits and Withdrawals `curl -s "https://api.terminal.markets/api/v1/deposits-withdrawals/$VAULT_ADDRESS?limit=50&order=desc"` Note: `amount` is in wei units. Note: supports cursor pagination via `cursor=...`. ### Get Tokens `curl -s "https://api.terminal.markets/api/v1/tokens?includeMarketData=true"` Returns market data for all tokens. ### Get Swaps `curl -s "https://api.terminal.markets/api/v1/swaps?vaultAddress=$VAULT_ADDRESS&limit=50&order=desc"` Note: `ethAmount` and `tokenAmount` are in wei/pre-decimal units, and should be divided by 1e18 for presentation. Note: This endpoint uses cursor pagination. Each swap contains a `cursor` to resume from. ### Get Strategies `curl -s "https://api.terminal.markets/api/v1/strategies/$VAULT_ADDRESS?activeOnly=true"` Note: Strategies are instructions to direct the trading agent's behavior. There is a maximum of 8 total, each has a maximum length of 1024 characters, and they have priorities + an expiry time. ### Get Token OHLCV Candles `curl -s "https://api.terminal.markets/api/v1/candles/$TOKEN_ADDRESS?timeframe=1m&to=$(date +%s)&countback=300"` Get token chart data. Note: `timeframe` and `to` are required. Valid timeframes: `1m`, `5m`, `15m`, `1h`, `4h`, `1d`. ### Get Inference Logs `curl -s "https://api.terminal.markets/api/v1/logs/$VAULT_ADDRESS?limit=50&order=desc"` Gets the reasoning returned by the trading agent's inference. Note: cursor pagination via `cursor=...`. ### Get Token Holders `curl -s "https://api.terminal.markets/api/v1/holders/$TOKEN_ADDRESS?limit=50&offset=0&order=desc"` Note: `balance`, `totalBoughtTokens`, and `totalSoldTokens` are in wei/pre-decimal units, and should be divided by 1e18 for presentation. Note: `order=desc` returns largest holders first. ### Get Leaderboard `curl -s "https://api.terminal.markets/api/v1/leaderboard?limit=50&sortBy=total_pnl_usd"` Note: optional `cursor=...` for pagination ### Get PnL History `curl -s "https://api.terminal.markets/api/v1/pnl-history/$VAULT_ADDRESS"` Note: returns time-series PnL datapoints for charting. `pnlEth` is in wei. ## Onchain Actions ### Update vault settings `cast send "$VAULT_ADDRESS" "updateSettings((uint256,uint256,uint8,uint8,uint8,uint8,uint8))" "(5000,200,3,3,3,3,3)" --private-key "$DX_TERMINAL_PRIVATE_KEY" --rpc-url "https://mainnet.base.org"` Params in tuple order: `(maxTradeAmount, slippageBps, tradingActivity, assetRiskPreference, tradeSize, holdingStyle, diversification)`. Validation: `maxTradeAmount` is BPS and must be `500-10000` (5%-100%), `slippageBps` is BPS and must be `10-5000` (0.1%-50%), all slider fields are integers `1-5`. ### Strategies #### Add Strategy example: `cast send "$VAULT_ADDRESS" "addStrategy(string,uint64,uint8)" "Rotate into strongest relative volume while keeping 20% idle ETH for opportunities." "$(( $(date +%s) + 86400 ))" "2" --private-key "$DX_TERMINAL_PRIVATE_KEY" --rpc-url "https://mainnet.base.org"` Params: `strategy` (string), `expiry` (unix seconds), `prio` (`0=Low`, `1=Med`, `2=High`). Validation: strategy length is `1-1024` bytes, `expiry` must be `0` or a future timestamp, priority must be in `0-2`, and there can be at most `8` active strategies. #### Disable Strategy `cast send "$VAULT_ADDRESS" "disableStrategy(uint256)" "1" --private-key "$DX_TERMINAL_PRIVATE_KEY" --rpc-url "https://mainnet.base.org"` Param: `strategyId` (uint256). ### Deposit `cast send "$VAULT_ADDRESS" "depositETH()" --value 0.05ether --private-key "$DX_TERMINAL_PRIVATE_KEY" --rpc-url "https://mainnet.base.org"` ### Withdraw `cast send "$VAULT_ADDRESS" "withdrawETH(uint256)" "50000000000000000" --private-key "$DX_TERMINAL_PRIVATE_KEY" --rpc-url "https://mainnet.base.org"` Param: `amount_` in wei.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)