owlp-cli
Original:🇺🇸 English
Translated
Use the OwlPay Wallet Pro CLI (owlp) to manage crypto wallets, check balances, and view transactions. Use when the user wants to interact with their OwlPay wallet via CLI commands.
12installs
Added on
NPX Install
npx skill4agent add owlting/owlpay-wallet-pro-cli owlp-cliTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →OwlPay Wallet Pro CLI agent skill.
Installation & First Use
Prerequisites
Node.js ≥ 20.12.0 and npm must be available. Verify with .
node -v && npm -vInstall
bash
owlp -V # check if already installedIf the command is not found:
bash
npm install -g @owlpay/owlp-cli
owlp -V # should print "OwlPay Wallet Pro CLI v0.5.13" or laterFirst-Run Checklist
After installation, check readiness (capture the output — see § Output Discipline below):
bash
RESULT=$(owlp status --json 2>/dev/null) && echo "$RESULT" | jq '.data | {account: .account.ready, wallets: .wallets.ready, kyc: .kyc.ready}'Then follow this decision tree:
| Condition | Action | Agent-automatable? |
|---|---|---|
| Two-step flow: (1) run | Partially — agent runs the commands; human opens browser and reads the passcode |
| Security-sensitive. Strongly recommend the user run | Requires explicit user consent |
| Only needed for fiat withdrawal (off-ramp). Crypto transfers work without KYC. If needed: (1) run | Partially — agent runs the commands; human completes verification in browser |
After resolving all states, re-run the status check above — all sections should show .
falseready: trueImportant: For account setup, use the two-step flow above instead of . For KYC, use the two-step + flow instead of asking the user to run manually.
owlp onboard --jsonowlp auth loginkyc submit --jsonkyc wait --jsonowlp kyc submitEnvironment
Two environments: prod (default) and stage. Resolution precedence:
- flag (per-command override)
--stage - (persistent)
~/.owlpay-wallet-pro/config.json - Default ()
prod
bash
RESULT=$(owlp env get --json 2>/dev/null) && echo "$RESULT" | jq '.data | {env, source}' # Show current env
owlp env set stage # Persist env to config.json
owlp env set prod # Switch back to prod
RESULT=$(owlp balance --stage --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | "\(.symbol): \(.balance)"' # One-off stage overrideWhen running in , a 3-line banner is emitted to stderr on first output (suppressed for subcommands and mode, which instead prepends a NDJSON line).
stageenv--json{"type":"meta.env",...}Global flags available on every command:
- — machine-readable output (always use when parsing programmatically)
--json - — use stage environment instead of the persisted / default env
--stage - — use a specific wallet instead of the default
--wallet <name> - — verbose logging to stderr
--debug
Network Requirements
Commands fall into two categories based on whether they need to reach the OwlPay API:
Offline (local file I/O only — work in any environment):
, , , , , , , , , ,
-Venv getenv setauth logoutwallet createwallet importwallet listwallet renamewallet switchwallet export-keywallet resetOnline (hits OwlPay API — fails with / exit code 4 when unreachable):
, , , , , , , , , , , ,
NETWORK_ERRORauth loginauth statusstatusbalancesendtx listtx detailchainstokenscountriesverifykyc statuskyc submitIf your execution environment restricts outbound network access (sandboxed CI, air-gapped containers, etc.), only offline commands will succeed. Online commands that cannot resolve will throw with exit code 4.
wallet-pro.owlting.comNetworkErrorOutput Discipline (MANDATORY)
NEVER run as a standalone Bash command. This is the single most common agent mistake with this CLI. When you run it bare, the full JSON envelope (often 30–80 lines) floods the conversation as unreadable noise.
owlp ... --jsonEvery invocation MUST use this pattern:
owlp ... --jsonbash
RESULT=$(owlp <command> --json 2>/dev/null) && echo "$RESULT" | jq '<filter>'Examples of correct usage:
bash
# ✓ Correct — only the parsed summary appears in the conversation
RESULT=$(owlp status --json 2>/dev/null) && echo "$RESULT" | jq '.data | {account: .account.ready, kyc: .kyc.ready, wallets: .wallets.ready}'
RESULT=$(owlp balance --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | "\(.chain) \(.symbol): \(.balance)"'
RESULT=$(owlp wallet list --json 2>/dev/null) && echo "$RESULT" | jq -r '.data.wallets[] | .name'All of these are WRONG — do not use:
bash
# ✗ WRONG — bare command, JSON floods conversation
owlp status --json
owlp status --json 2>/dev/null
owlp balance --json
owlp balance --json 2>/dev/null
owlp wallet list --jsonRules:
- Capture to a variable — (stderr silenced to suppress banners / debug noise).
RESULT=$(owlp ... --json 2>/dev/null) - Parse with jq in the same Bash call — to extract only the fields you need.
echo "$RESULT" | jq -r '...' - Present as natural language — after parsing, summarize the result conversationally per § Agent Output Guidelines. Never paste raw JSON in your reply.
JSON Response Envelope
All regular responses are wrapped:
--jsonjson
{
"success": true,
"env": "prod",
"data": { ... }
}When parsing, access fields via :
.data.<field>bash
RESULT=$(owlp balance --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | "\(.chain) \(.symbol): \(.balance)"'Event-stream commands (, , registration) emit NDJSON instead: one line, then one JSON line per event, then a line. Parse line-by-line, not as a single object. See and for details.
sendkyc submitonboard{"type":"meta.env",...}{"type":"complete","result":...}send.mdkyc.mdAuthentication
Must login before using commands that hit the API.
Agent mode (preferred): Use the two-step flow — see Installation & First Use → First-Run Checklist above. Do not call as an agent; it blocks on browser interaction.
owlp onboard --jsonowlp auth loginHuman mode:
bash
owlp auth login # Interactive (opens browser — human only)
owlp auth logout # Clear local session (keeps wallets)
RESULT=$(owlp auth status --json 2>/dev/null) && echo "$RESULT" | jq '.data | {loggedIn, email, workspace: .workspace.name}'env getchainstokenscountriesverifyCommand Reference
Read the relevant file before executing a command:
- — Environment management (get/set, config.json)
skills/commands/env.md - —
skills/commands/auth.md/auth login/auth logoutauth status - — Guided setup (account + wallet + KYC)
skills/commands/onboard.md - — Wallet create, import/restore, list, rename, switch, export-key, reset
skills/commands/wallet.md - — Balance queries across chains and tokens
skills/commands/balance.md - — Transaction history, filters, pagination, and detail
skills/commands/tx.md - — Send tokens (preview + submit), NDJSON event stream
skills/commands/send.md - — Supported chains and tokens
skills/commands/chains.md - — Address verification and chain auto-detection
skills/commands/verify.md - — Countries allowed for individual registration
skills/commands/countries.md - — KYC status check and browser-assisted submission
skills/commands/kyc.md - — Unified readiness dashboard (account, KYC, wallets)
skills/commands/status.md - —
skills/commands/reset.md(active env) /owlp reset(everything)owlp reset --all
Onboarding Flow
See Installation & First Use → First-Run Checklist above for the agent-friendly onboarding sequence.
For a guided flow that handles account creation, wallet setup, and optionally KYC in one command, use . In TTY mode it is fully interactive; in agent mode () it supports a two-invocation passcode flow — see for the agent workflow. KYC can be skipped with or by declining the interactive prompt — it is only needed for fiat deposit/withdrawal.
owlp onboard--jsonskills/commands/onboard.md--skip-kycCommon Agent Workflows
Reminder: everycall below must follow § Output Discipline — capture to a variable, parse with jq, never expose raw JSON.owlp ... --json
Send Token
bash
# 1. Verify destination address (auto-detects chain)
RESULT=$(owlp verify <address> --json 2>/dev/null) && echo "$RESULT" | jq '.data'
# 2. Confirm token is supported on that chain
RESULT=$(owlp tokens --chain <chain> --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | .symbol'
# 3. Check you have sufficient balance
RESULT=$(owlp balance --chain <chain> --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | "\(.symbol): \(.balance)"'
# 4. Preview the transfer and estimated fees (no --confirm)
RESULT=$(owlp send --to <address> --amount <n> --token <symbol> --chain <chain> --json 2>/dev/null) && echo "$RESULT" | jq '.data'
# 5. Execute the transfer
RESULT=$(owlp send --to <address> --amount <n> --token <symbol> --chain <chain> --confirm --json 2>/dev/null) && echo "$RESULT" | jq '.data'
# 6. Confirm transaction appears in history
RESULT=$(owlp tx list --type send --json 2>/dev/null) && echo "$RESULT" | jq -r '.data[] | "\(.id) \(.type) \(.amount) \(.symbol)"'
# 7. Poll for final state using the transaction ID (envelope: data.type, data.detail.*)
RESULT=$(owlp tx detail <id> --json 2>/dev/null) && echo "$RESULT" | jq '.data.detail.state'
# Poll until data.detail.state === "completed" && data.detail.order.blockchain_transaction.state === "confirmed"
# (send envelope only — see skills/commands/tx.md for per-type field tables)Check KYC Before Off-Ramp
bash
RESULT=$(owlp kyc status --json 2>/dev/null) && echo "$RESULT" | jq '{status: .data.status, verified: .data.verified}'
# status == "verified" && verified == true — ready for fiat withdrawal
# any other status — off-ramp not availableAgent Output Guidelines
When presenting command results to the user, follow these principles:
- Natural language first. Summarize results conversationally, as if reporting to a colleague. Do not paste raw JSON output. Use lists or tables only when data volume makes prose hard to scan — the choice is yours.
- Event streams: report the outcome, not the journey. For commands that emit NDJSON event streams (,
send,onboard), wait for the final result and summarize it once. Do not narrate each intermediate event.kyc submit - Errors: include the code and a next step. When a command fails, mention the error code (e.g. ) and suggest what the user can do about it. Each command's documentation describes its common errors.
INSUFFICIENT_GAS - Sensitive operations: warn before executing. Before running ,
wallet create, orwallet import, explain the risks (mnemonic loss, private key exposure) and ask the user to confirm. Do not execute the command first and warn after.wallet export-key - Respect the command's section. Individual command docs may include an
## Agent Responsesection with specific guidance on what to highlight and how to present results. Follow those instructions; they override these general principles where they differ.## Agent Response
Data Storage
Local files under :
~/.owlpay-wallet-pro/- — persisted env (
config.json), root level, shared across envs{"env":"prod"|"stage"} - ,
prod/auth.json— session tokens + workspace (env-scoped)stage/auth.json - ,
prod/wallets.json— addresses + mnemonics (env-scoped)stage/wallets.json
Private keys never leave the client. The API only sees signed transactions.