
This is OKX's agentic wallet interface wrapped as a Claude skill. It handles the full stack of wallet operations: login and OTP, multi-account management, balance checks across EVM and Solana chains, token transfers (both native and ERC-20/SPL), contract calls, transaction history, and message signing. The interesting bit is Gas Station support, OKX's EIP-7702 based feature that lets you pay gas with stablecoins instead of native tokens. The skill includes routing logic to hand off to other skills when you mention specific DApps like Aave or Uniswap, or when you want to swap tokens. If you're building agents that need to move money on-chain or check balances programmatically, this gives you the primitives without writing your own wallet integration.
$ npx -y skills add okx/onchainos-skills --skill okx-agentic-wallet --agent claude-codeInstalls into .claude/skills of the current project.
Use this Skill for wallet and on-chain execution requests. Route marketplace and
subscription requests to okx-ai; route third-party DApp-specific operations to
the applicable DApp Skill.
Match the user intent to its owning module Reference.
| User intent | Reference |
|---|---|
| Sign in / connect / social login (Google / Apple / Email) / logout; add / switch account; login status | wallet |
| Deposit / top up / receive a token; my receive address or QR code | funding |
| Check my (logged-in) balance / holdings, including BTC or a BRC-20 ticker | wallet |
| Bitcoin UTXO-specific queries, management, or FAQ / definitions | utxo-cli-reference |
| Send / transfer native, ERC-20, SPL, BTC, BRC-20, or SUI tokens | wallet |
| Call a contract (approve / deposit / withdraw / custom function), including a SUI PTB | wallet |
| Transaction history / tx detail / order status; sign a message (personalSign / EIP-712) | wallet |
| Policy / spending limit / whitelist; export wallet / mnemonic; MEV protection for a contract-call; third-party Solana plugin write pre-flight | wallet |
| Apple-login wallet differs from the OKX Wallet App / "missing" balance; rename a wallet or account; how transaction signing works (TEE) | account-faq |
Pay gas with a stablecoin on Solana; enable / disable / change default gas token / status; a send / contract-call returns gasStationUsed or a Gas Station Confirming; Gas Station FAQ / "check order" | gas-station |
| Swap / trade / buy / sell / convert tokens; quote; best route; calldata-only swap; liquidity sources; ERC-20 approval for a DEX | swap |
| Bridge / cross-chain swap / move tokens between chains; bridge quote / fee comparison; supported bridges; track cross-chain arrival | bridge |
| Limit order: buy dip / take profit / stop loss / buy above; cancel / list / resume limit (strategy) orders | strategy |
| Broadcast a signed / raw tx; estimate gas price / gas-limit; simulate a tx; track a broadcast order | gateway |
A given public address's balance / holdings / total value (0xAbc… / a Solana address) | portfolio |
| Token / honeypot safety; DApp / URL phishing; tx or signature pre-check; check / list / revoke token approvals (ERC-20 / Permit2) | security |
| Export / locate audit log, view command history | audit-log |
Preflight checks: At the start of each thread, complete the checks in _shared/preflight.md.
--help or the CLI Reference.--help only when the Reference lacks a needed detail or the installed CLI differs.--chain accepts numeric chain IDs and human-readable names. Resolution rules and the supported-chain matrix live in _shared/chain-support.md. If <100% confident of a chain name, run onchainos wallet chains.
1.5 ETH), never base units.< 0.01, show full precision.$1.2M, $340K); sort holdings by USD value descending.0x1234...abcd); native tokens with empty tokenAddress → (native).wETH, stETH, wBTC, xOKB…) and its price differs >50% from the base token, add an inline price unverified flag and suggest onchainos token price-info to cross-check.Before any state-changing operation, display the relevant action and obtain the user's explicit affirmative confirmation. Do not broadcast, send, approve, revoke, swap, bridge, or otherwise change on-chain state from an implicit or ambiguous request.
Some state-changing commands return confirming (exit code 2) when the backend needs user confirmation. The response carries message (prompt to show) and next (what to do after they confirm).
message and ask for confirmation.next (usually: re-run the same command with --force appended). For wallet send, do not query wallet balance between confirmation and the re-run; the server validates balances and gas.Never pass --force on the FIRST invocation of a state-changing command. Add --force only after all of: (1) you ran the command once without it, (2) the CLI returned a Confirming response (exit code 2, "confirming": true), (3) you displayed message and the user explicitly confirmed.
clientId, API keys, private keys, seed phrases, or passwords. Never expose: accessToken, refreshToken, apiKey, secretKey, passphrase, sessionKey, sessionCert, teeId, saTeeId, encryptedSessionSk, signingKey, raw tx data. Show raw accountName (never raw accountId to the user).Credentials corrupted / "please login again" error the local credential store is unreadable — don't retry the same command, re-authenticate the user with wallet login. See wallet-troubleshooting.md.txHash, signature, contract address) MUST be echoed verbatim, character-for-character from the most recent CLI stdout. Never reproduce an identifier from memory, expand an abbreviated form, or re-type it across messages — re-invoke the command that produced it; for a wallet address, use wallet addresses. Never paraphrase, normalize case, insert spaces, or line-break inside an identifier. Always display the full txHash.0x-prefixed, 42 chars; Solana Base58, 32–44 chars. Validate before sending.executeResult is false → show executeErrorMsg, do NOT broadcast.block > warn > empty. Top-level action = highest priority from riskItemDetail. An empty action means only that no risk was detected within the checks performed; it is not proof that the asset, DApp, signature, or transaction is safe.riskLevel, isHoneyPot, or taxRate. The CLI owns the matrix, so a hand-derived rule can drift.security token-scan --trade-direction, read each token's action (block / pause / warn / safe) and the top-level combinedAction (block > pause > warn > safe).swap quote and swap swap, read each route's action (ok / warn / block) and reason.block. Require explicit yes/no on pause. Show the reason and ask on warn. For safe, ok, or an empty action, continue with the matched flow.unsignedInfo marks a transaction as gas-free, skip the native-token balance pre-check. The transaction can succeed when the user holds zero native token.Sponsors