nova-wallet
-
If
novais not installed, install with:npm install @mynthai/nova
Or run without installing via npx (replace all nova usage with
npx @mynthai/nova)
Deterministic Parsing (MUST)
-
Use structured output:
-j/--jsonor-t/--toon(never parse human output). -
Always evaluate BOTH:
- Process exit code (
0success,1error) - Structured
status(okorerror)
- Process exit code (
-
On error: read
error.messageanderror.exitCode(if present).
Safety / Financial Safeguards (MUST)
-
Before any financial action (
send,withdraw):- Confirm current network via
nova config get network. - Confirm intended network with user (mainnet vs testnet).
- Confirm amount and destination/address (and blockchain for withdraw).
- Confirm current network via
-
sendis non-idempotent:- Never retry
nova sendblindly. - If outcome is uncertain, verify via
nova -t balance(safe).
- Never retry
-
Treat
claimUrlas a secret credential:- Never paste into shared chats/tickets/docs or persistent logs.
-
Key material is secret:
- Never log/export keys or phrases into shared/persistent contexts.
- Warn user before
exportoperations.
Wallet Types
-
Email wallet: created via
nova login(email + verification code). -
Private-key wallet (default if not logged in): auto-created; user must back up:
nova export keynova export phrase
Networks
novaoperates onmainnetortestnet.- Fresh install default:
testnet. - Network setting persists; funds/addresses/balances are isolated per network.
Commands:
nova config get network
nova config set network <mainnet|testnet>
Exit Codes
0= success (still parsestatus).1= error (inspecterror.message).
Output Modes (for agents)
- JSON:
-j,--json - TOON:
-t,--toon
Commands (syntax preserved)
Auth
Request login code:
nova login request <email>
Confirm code:
nova login confirm <code>
Options:
-j,--json-t,--toon-f,--force(request only): overwrites existing private-key wallet; warn user.
Account
Address:
nova address [blockchain]
-
Default blockchain:
mynth -
Supported blockchains:
basecardanohyperliquidmynthplasmasolanastablesuitron
Balance:
nova balance
Notes:
balanceis USD-denominated.currencyis always USD.
Send (FINAL ACTION)
nova send <amount> [destination]
Options:
-d,--dry-run— Validate and preview without submitting
Behavior:
-
If
destinationomitted:- Creates claim link (
claimUrl) - Funds leave wallet immediately.
- Creates claim link (
-
If
destinationprovided:-
Sends directly.
-
destinationmay be:- An email address (creates or targets an email wallet).
- A nova wallet address.
- A supported external blockchain wallet address (network-dependent).
-
Rules:
- No interactive confirmation.
- Non-idempotent: re-running sends again.
- Use
--dry-run(-d) to validate inputs and preview without submitting. - Always confirm with user whether
destinationis an email address or wallet address before execution.
Post-check:
- Parse
statusand confirmresult.sent: true. - Surface
result.txIdwhen present. - If
claimUrlpresent, treat as secret.
Success example (TOON):
status: ok
result:
sent: true
amount: "1"
txId: d32c966fd4302673455eb790b66e3efc331ef7aace412c73b8917ba0bb37ace8
claimUrl: "https://preview.mynth.ai/c/mto3M1JEa6Hr0UFRCBGjOg"
Claim Links
Properties (when nova send <amount> has no destination):
- One-time use.
- Do not expire.
- Revocation: creator must claim it themselves (redeem back to own wallet).
Withdraw (FINAL ACTION)
nova withdraw <amount> <stablecoin> <address> <blockchain>
Options:
-d,--dry-run— Validate and preview without submitting
Rules:
-
Confirm:
- Sufficient balance
- Network
- Stablecoin support
- Address + blockchain compatibility
-
Parse
status. -
Surface
result.txIdwhen present.
Verification (safe):
nova -t balance
Stablecoin Support
Mainnet:
base: USDCcardano: USDC, USDA, USDMhyperliquid: USDCsolana: USDC, USDTstable: USDTsui: USDCtron: USDT
Testnet:
base: USDCcardano: USDC, USDA, USDMhyperliquid: USDCsolana: USDCstable: USDTsui: USDTtron: USDT
Fees
-
Internal transfers / claim links: fee-free; recipient gets full amount.
-
Direct sends to email or nova wallet addresses: fee-free; recipient gets full amount.
-
External withdrawals:
- May incur chain fees.
- Fees are calculated at execution.
- Fees are deducted from withdrawal amount (not separate).
Rate Limits
If rate-limited, structured output indicates an error and includes a message like: “Rate limited. Try again in N seconds”.
Rules:
- Do not retry immediately; respect the wait time.
- Never retry
sendblindly after a rate-limit error. - If unsure whether
sendexecuted, verify vianova -t balance.
Error example (TOON, insufficient balance):
status: error
error:
message: 3tkv5qrm43jtjf86x3ks5l6jpjgpyw7n8424pm must have at least balance of 1000000
exitCode: 1
Key Management (security-critical)
Export:
nova export key
nova export phrase
Import:
nova import key
nova import phrase
Rules:
- Warn user: exporting reveals secrets.
- Never store or share exported key/phrase.