Skip to content

Bullpen CLI Skill

This is a live example of the AI agent skill format. For the full format specification, see AI Agent Skill Format Specification.

Wallet model

Each Polymarket user has two layers of wallet selection:

  1. Bullpen wallet (owner EOA) — set via bullpen wallet select. Determines which Turnkey-managed signing key is active. A user may have multiple Bullpen wallets in one account.

  2. Polymarket wallet kind (Deposit Wallet vs Safe vs Proxy) — determined automatically by the Bullpen server per owner EOA. Users typically do NOT pick this manually; the server's selection is authoritative. In healthy server state, one Polymarket wallet kind is active for a given owner. Money-moving commands route through the consistent server-selected kind; diagnostics may inspect all wallet kinds, and inconsistent server state fails closed. When the user has assets on a non-active wallet kind, the audit + consolidate workflow surfaces the state and may support a support-guided consolidation path for eligible on-chain assets.

The server-selected wallet is what trading commands route through by default when server state is consistent. The --wallet-kind safe|dw override is available only for asset-moving commands (consolidate, sweep-stranded) and is not a trading-wallet switch. Trading commands always follow the server selection or fail closed when server evidence is inconsistent.

--wallet <OWNER_EOA> pins the Bullpen owner/signer for automation. It does not override Safe/Proxy vs Deposit Wallet server selection and does not bypass 1151 / L2_WALLET_DISAGREEMENT wallet-routing guards.

Common user scenarios

"My trade was rejected with 'maker address not allowed'" — Run bullpen fix --refresh. Follow its one next command. If it directs you to support, run bullpen support and stop retrying the trade; changing wallets or redeploying a wallet is not a safe bypass.

"Polymarket says wallet registry validation failed / wallet is not registered" — Run bullpen recover polymarket --refresh --output json and follow its next_command. If the plan says support is required, run bullpen support; repeated approval, activation, login, or wallet switching cannot repair an account-side registration record.

"I have funds on my Safe AND my Deposit Wallet" — Preview bullpen recover funds --dry-run --output json. Execute bullpen recover funds --yes only after the plan identifies the expected source, destination, and assets.

"My trade failed with 1151 / wallet disagreement" — Run bullpen recover polymarket --refresh --output json. Do not use --wallet or a wallet-kind command as a bypass. Follow the returned next command, or run bullpen support when the plan says account repair is required.

"My Deposit Wallet has funds/redeemables but the CLI still says another wallet is active" — Run bullpen recover polymarket --refresh --output json. Preview bullpen recover funds --dry-run --output json only if the plan identifies owned stranded assets. Use bullpen support if the selected wallet and on-chain evidence disagree.

"I want to recover funds from an older wallet" — Use bullpen recover funds --dry-run --output json. Do not add expert wallet overrides unless the recovery plan or Bullpen support identifies the exact owned destination.

"My first trade fails with credential errors" — Run bullpen fix --refresh. Run bullpen polymarket activate only when the fix output identifies first-trade activation as the next action.

Copy-trade lifecycle

Copy trading depends on Bullpen service-side subscription, budget, and executor state. Before telling a user that a copy-trading incident is fixed, verify the current CLI can list the subscription and executions, and that the service returns typed support-safe errors instead of low-level transport failures.

Prefer pause over delete. Deleting a subscription is destructive in one specific way that affects open positions.

  • Delete affects the subscription record only. It does NOT touch open Polymarket positions — those live on the user's Polymarket wallet, not the subscription. Open positions remain after delete.
  • Delete DOES stop mirror-sells. If the subscription has exit_behavior = mirror_sells, future mirror-sell events from the followed trader stop firing once the subscription is deleted. Open positions become manual-exit-only. Warn users about this before deleting.
  • pause is the non-destructive alternative. bullpen tracker copy pause <ADDRESS> moves the subscription to Paused. resume restores it to Active. Subscription config (including exit_behavior) is preserved.
  • Execution history retention on delete is server-side. The CLI cannot guarantee history rows persist after delete; do not promise retention unless Bullpen support confirms it for the account.

Pre-delete snapshot recipe. Before any destructive action on a copy-trade subscription, capture state so the user can rebuild if needed:

bullpen tracker copy list --output json > copy-list-snapshot.json
bullpen tracker copy executions --output json > copy-executions-snapshot.json
bullpen polymarket positions --output json > positions-snapshot.json

Decision tree: - Want to stop copying temporarily? → pause (reversible) - Subscription is misconfigured and you want a clean restart? → pause first, then either update or delete-and-recreate - Open positions need to exit on the followed trader's signals? → DO NOT delete; pause only

Instructions

Quick Start (if user is new)

If the user hasn't set up Bullpen yet, guide them through this canonical order:

  1. Install CLI: curl -fsSL https://cli.bullpen.fi/install.sh | bash
  2. Log in: bullpen login
  3. Inspect local session state: bullpen status (local-only; use bullpen fix --refresh for active account and readiness checks)
  4. Install AI skills: bullpen skill install
  5. Restart Claude/Codex so it picks up the new skills, then ask it anything

To update an existing install: bullpen upgrade (updates the binary and skills automatically). Homebrew and npm installs delegate to the package manager before checking GitHub releases. Homebrew recovery: brew update, brew upgrade bullpen, then brew link --overwrite bullpen; if Homebrew refuses the Bullpen tap as untrusted, run brew trust --formula bullpenfi/tap/bullpen and retry. npm recovery: npm install -g @bullpenfi/cli@latest.

Current Wallet-Selection Guidance

Bullpen selects the active Polymarket wallet for the account. Ordinary trading commands use that selection automatically and fail closed when the account data is inconsistent. Do not choose a wallet kind manually to make a failed trade go through.

Use this order:

  1. Run bullpen status for local session state.
  2. Run bullpen fix --refresh when trading or balances look wrong.
  3. Run bullpen recover polymarket --refresh --output json when the fix output identifies a Prediction account or wallet problem.
  4. Preview bullpen recover funds --dry-run --output json only when the recovery plan finds assets on an older owned wallet.
  5. Run bullpen support when the plan says account-side repair is required.

Expert commands such as wallet-audit, wallet select --kind, reregister-deposit-wallet, consolidate, and sweep-stranded remain available for support-directed recovery. Use them only when the guided output or Bullpen support names the exact command and target. --wallet selects an owner for automation; it never overrides the account's selected Polymarket wallet kind.

For collateral conversion, preview before submitting:

bullpen polymarket wrap <AMOUNT> --preview --output json
bullpen polymarket unwrap <AMOUNT> --preview --output json

Run the corresponding --yes command only after the preview shows the expected wallet, amount, and destination.

Step 1: Identify What the User Wants to Do

Route to the right reference based on the user's intent:

Getting started (install, authenticate, configure, install skills): - references/getting-started.md

Find and research markets (discover, search, events, prices, tags, series): - references/discovery-and-research.md

Trade (buy, sell, limit orders, redeem, CTF split/merge, collateral): - references/trading.md

Manage portfolio and orders (positions, open orders, cancel, watchlist, activity): - references/portfolio-and-orders.md

Social and signals (comments, feeds, alerts, tracker, leaderboard): - references/social-and-signals.md

Account and platform (auth, config, portfolio balances, points, status): - references/platform-and-account.md

Wallet management (list wallets, select primary, switch chains): - references/platform-and-account.md

Step-by-step tutorials (complete workflows with exact commands): - references/trading-tutorial.md — discover → trade → manage → redeem - references/copy-trading-tutorial.md — find traders → copy → monitor → manage - references/tracker-tutorial.md — track wallets → groups → watchlist → alerts

Scripting and automation (JSON output, jq piping, batch workflows): - references/scripting-and-automation.md - references/cross-protocol-sizing.md — unit semantics for Polymarket, Hyperliquid, and Solana trade sizing

Hyperliquid / perpetuals (perps trading, positions, funding, balances, orders, live watch, funds movement): - references/hyperliquid.md

Solana (experimental Solana balance/portfolio, token price/metadata by mint, Jupiter Ultra swaps, activity history, stats/closed-position PnL, withdraw, deposit): - references/solana.md

Bracket contests (March Madness, tournament picks, fill bracket, leaderboard): - references/bracket-contest.md

Community and support (Discord, X/Twitter, file a ticket, report a bug): - references/community.md

Diagnostics and troubleshooting (collect system info, debug errors, file support tickets): - references/diagnostics.md

Troubleshooting (deposit not showing, wrong asset, account access, CLI errors): - references/troubleshooting.md

Many tasks span multiple categories. Read all relevant references before acting.

Step 2: Key Rules

Before running any command, keep these rules in mind:

  • Most data and automation commands support --output json for machine-readable output. Default is table; raw/script, interactive, and explicitly unsupported streaming commands reject JSON mode.
  • Trading commands require --yes to skip interactive confirmation (essential for automation).
  • Authentication is required for any write operation (trading, orders, alerts, comments).
  • Read-only operations (discover, search, price, event, default and server-filtered leaderboards) work without local auth when the server accepts anonymous reads. Filtered social feeds/comments still require login.
  • Market slugs remain the primary identifier; copy current slugs from discover, search, or a Polymarket URL. Read-only market data commands such as market, price, orderbook, holders, trades, price-history, and candles also accept numeric Gamma IDs, decimal or 0x CLOB token IDs, and 0x condition IDs. Trading and money-moving commands still use market slugs/outcomes unless their help says otherwise.
  • Polymarket API parity is not raw passthrough by default. Treat command JSON as Bullpen's contract. Some CLOB-backed reads are exact upstream adapters; many user-facing commands are normalized; prediction trade commands (buy, sell, limit-buy, limit-sell) are proxied through Bullpen for auth and safety and are not direct CLOB POST /order calls.
  • Outcomes are specified by displayed outcome label copied from market data. Yes/No and aliases apply only when those labels exist on that market.
  • Limit prices must match each market's tick size (representing cents per share / probability).
  • Global flags: --env staging|production, --config <path> work on all commands. If --config is omitted, BULLPEN_CONFIG is used before the default ~/.bullpen/config.toml. Explicit --config and BULLPEN_CONFIG paths fail closed when missing instead of silently loading defaults. Credentials still resolve via BULLPEN_HOME, so set BULLPEN_HOME too when isolating a session.

Step 3: Execute

Run commands via bullpen CLI. If the CLI is not installed, start with references/getting-started.md.

Quick Command Map

Use this for simple queries without reading full references:

bullpen prediction ... is a visible alias for bullpen polymarket ...; help output may show the canonical polymarket form.

Intent Command
Install CLI curl -fsSL https://cli.bullpen.fi/install.sh | bash
Log in bullpen login
Check local auth/session status bullpen status (local-only; remote and wallet-readiness checks remain not_checked)
Run active account/readiness checks bullpen fix --refresh (refreshes evidence, runs the shared recovery planner, and prints the safest next command)
Preview a simple prediction trade bullpen trade buy <SLUG> <OUTCOME> <USD_AMOUNT> --preview --output json
Place a simple prediction trade bullpen trade buy <SLUG> <OUTCOME> <USD_AMOUNT> --max-price <PRICE> --yes
Preview recovery bullpen recover polymarket or bullpen recover funds --dry-run --output json
Preview redeem bullpen recover redeem --dry-run --output json
Create support bundle bullpen support or bullpen support bundle --refresh --include-order-credit --output json (collects redacted diagnostics for Bullpen support)
Check Polymarket platform status bullpen polymarket status (public read-only status page with per-component health)
Discover markets bullpen polymarket discover (default hides untradeable markets; use --include-untradeable to include them, prefixed with [NOT TRADEABLE])
Discover sports markets bullpen polymarket discover sports (Sports markets have a 1-second matching delay by design. If a sports order doesn't fill immediately, the CLI prints a hint to retry with a more aggressive price.)
Discover crypto markets bullpen polymarket discover crypto
Search markets bullpen polymarket search "bitcoin"
Get event details bullpen polymarket event <SLUG>
Check price bullpen polymarket price <MARKET>
Check price history bullpen polymarket price-history --outcome <OUTCOME> <MARKET>
View market details bullpen polymarket market <MARKET>
List markets with filters bullpen polymarket markets --active --sort volume
Browse tags bullpen polymarket tags
Browse series bullpen polymarket series
Buy shares bullpen polymarket buy <SLUG> <OUTCOME> <USD_AMOUNT> [--max-price <PRICE>]
Sell shares bullpen polymarket sell <SLUG> <OUTCOME> <SHARES> [--min-price <PRICE>] or --max
Limit buy bullpen polymarket limit-buy --price 0.45 --shares 100 <SLUG> <OUTCOME>
Limit sell bullpen polymarket limit-sell --price 0.65 --shares 50 <SLUG> <OUTCOME>
View positions bullpen polymarket positions
View open orders bullpen polymarket orders
Cancel an order bullpen polymarket orders --cancel <ORDER_ID>
Cancel all orders bullpen polymarket orders --cancel-all --yes
Redeem resolved bullpen polymarket redeem (discovers redeemable positions from supported production sources, reports the payout route when available, and emits support-safe JSON when wallet or relayer evidence is inconsistent)
Close out resolved bullpen polymarket closeout --dry-run (won positions delegate to redeem; lost zero-payout positions are reported in current releases)
View watchlist bullpen tracker watchlist
Add Prediction to watchlist bullpen tracker watchlist add-polymarket <SLUG>
Add Onchain Solana token to watchlist bullpen tracker watchlist add-solana <MINT>
Add Hyperliquid to watchlist bullpen tracker watchlist add-hyperliquid --symbol BTC --kind perp or --token-id <SPOT_TOKEN_ID> --kind spot
View activity bullpen polymarket activity (also: history)
View typed trade history bullpen polymarket data my-trades [--type trade\|redeem\|split\|merge\|convert]
View recent trades bullpen polymarket trades <MARKET>
View top holders bullpen polymarket holders <MARKET>
View event top holders bullpen prediction event-top-holders <EVENT_ID_OR_SLUG>
View comments bullpen polymarket comments <SLUG>
View trade feed bullpen polymarket feed trades
View comment feed bullpen polymarket feed comments
Leaderboard bullpen polymarket data leaderboard
Trader profile bullpen polymarket data profile <ADDRESS>
Wallet stats bullpen prediction wallet-stats <ADDRESS>
Smart money signals bullpen polymarket data smart-money (requires: bullpen experimental enable prediction_analytics)
Portfolio balances bullpen portfolio balances
Portfolio P&L bullpen portfolio pnl
Current quests bullpen quests
Quest history bullpen quests history
Bullpen app rewards bullpen rewards --output json
Reconcile rewards bullpen rewards --reconcile --output json
Verify a reward claim bullpen rewards --verify <WITHDRAWAL_ID>
Polymarket rewards bullpen polymarket rewards --mm --output json
CLOB reward records bullpen polymarket clob rewards --date <YYYY-MM-DD> --output json
List wallets bullpen wallet list
View wallet addresses bullpen wallet addresses
Import wallet bullpen wallet import --chain evm
Rename wallet bullpen wallet nickname <ADDRESS> "Name"
Hide wallet bullpen wallet hide <ADDRESS>
Set primary EVM wallet bullpen wallet select <ADDRESS> --chain evm
Set primary Solana wallet bullpen wallet select <ADDRESS> --chain solana
View primary wallets bullpen wallet info
Show all 4 wallet addresses + balances bullpen wallet show-addresses
Audit Polymarket wallet state bullpen polymarket wallet-audit (read-only; shows all wallet kinds, on-chain balances, CTF positions, and stranded assets across all owner EOAs; use --refresh --output json for 1151)
Include off-chain order credit in wallet audit bullpen polymarket wallet-audit --refresh --include-order-credit --output json (read-only; opt-in because it requires signer-backed order-credit auth)
Repair confirmed server wallet selection bullpen polymarket wallet select --kind <safe|proxy|dw> --yes (replace the placeholder only after Bullpen support confirms the exact kind; then bullpen polymarket activate --yes if needed)
Consolidate assets to server-selected wallet bullpen polymarket consolidate (dry-run; add --yes to execute; default to no --wallet-kind; --wallet-kind safe\|dw is an asset-movement override, not a trading-wallet switch)
First-trade wallet activation bullpen polymarket activate (creates CLOB credentials and bundles approvals; usually auto-invoked on first trade)
Funds balances bullpen funds balances (--output json includes routing-wallet probe status: verified_clean, verified_nonzero, partial_unverified, or probe_failed; current successful probes are Polygon-only and therefore partial_unverified when Arbitrum/Ethereum remain unverified)
Deposit funds bullpen deposit (opens web app with correct per-chain routing; the old funds deposit-address flow is not available)
Track a trader bullpen tracker add 0x1111111111111111111111111111111111111111
Track with group bullpen tracker add 0x1111111111111111111111111111111111111111 --group group-123 --nickname "Name"
List tracked addresses bullpen tracker list
View tracked trades bullpen tracker feed
Manage groups bullpen tracker groups
Create a group bullpen tracker groups create "Name" --emoji "🐋"
Share a group bullpen tracker groups share <GROUP_ID>
Import a group bullpen tracker groups import <CODE>
Browse curated groups bullpen tracker groups curated
View alerts config bullpen tracker alerts
Set trade alert bullpen tracker alerts trade set --min-trade-size 5000 --tracked-only
Set smart alerts bullpen tracker alerts smart --smart-money true
Upgrade CLI bullpen upgrade
List bracket contests bullpen polymarket bracket contests --status open
Auto-fill chalk bracket bullpen polymarket bracket fill-chalk march-madness-2026 --tiebreaker 145 --yes
Fill bracket from file bullpen polymarket bracket fill march-madness-2026 --file picks.json --yes
Bracket summary bullpen polymarket bracket summary march-madness-2026
Submit bracket pick bullpen polymarket bracket pick march-madness-2026 --slot R1_E1 --winner "Duke" --yes
Bracket leaderboard bullpen polymarket bracket leaderboard march-madness-2026
Deposit funds bullpen deposit (opens web app)
Join Discord open "https://discord.com/invite/bullpen"
Follow on X open "https://x.com/BullpenFi"
File support ticket open "https://bullpen-help.freshdesk.com/support/tickets/new"
Collect diagnostics bullpen status --output json + bullpen config show --output json (v0.1.102+ redacts token-bearing provider URLs; still review output before sharing)

bullpen tracker copy start|edit|pause|resume|stop|delete|pending|confirm|reject is Polymarket/prediction-market copy trading only. Use the experimental bullpen hl copy surface to create or manage Hyperliquid copy subscriptions. bullpen tracker copy list|status reads Bullpen's copy-trading records and may show historical or mixed-platform subscriptions, so check the Platform table column or the JSON platform field before acting. Preview paths do not submit, and live mutating commands require --yes plus hyperliquid_trading.

| Dry-run copy subscription | bullpen tracker copy start <ADDRESS> --preset recommended --dry-run | | Copy a trader | bullpen tracker copy start <ADDRESS> --preset recommended | | List copy trades | bullpen tracker copy list (shows stopped time/reason when available) | | View copy trade status | bullpen tracker copy status <ADDRESS> | | Pending confirmations | bullpen tracker copy pending | | Confirm copy trade | bullpen tracker copy confirm copy-exec-123 | | Watch copy trades live | bullpen tracker copy watch (interactive monitor for pending Polymarket copy-trade executions; confirm/reject from the prompt) | | Preview Hyperliquid copy subscription | bullpen hl copy start <LEADER> --fixed-notional 25 --preview --output json (<LEADER> can be a 0x... address or Bullpen username) | | Create Hyperliquid copy subscription | bullpen hl copy start <LEADER> --fixed-notional 25 --yes (experimental; preview first and verify the subscription after creation) | | Update Hyperliquid copy subscription | bullpen hl copy update <SUBSCRIPTION_ID> --fixed-notional 50 --preview --output json | | List Hyperliquid copy subscriptions | bullpen hl copy list --include-stopped --output json | | Inspect Hyperliquid copy subscription | bullpen hl copy show <SUBSCRIPTION_ID> --output json | | Hyperliquid copy pending executions | bullpen hl copy pending --output json | | Hyperliquid copy executions history | bullpen hl copy executions --subscription <SUBSCRIPTION_ID> --output json | | Hyperliquid copy open positions | bullpen hl copy open-positions --subscription <SUBSCRIPTION_ID> --output json (the subscription is an option; do not pass a leader address positionally) | | Hyperliquid copy leader profile | bullpen hl copy leader-profile <LEADER> --output json | | Preview Hyperliquid copy pause | bullpen hl copy pause <SUBSCRIPTION_ID> --preview --output json | | Preview Hyperliquid copy resume | bullpen hl copy resume <SUBSCRIPTION_ID> --preview --output json | | Preview Hyperliquid copy stop | bullpen hl copy stop <SUBSCRIPTION_ID> --preview --output json | | Hyperliquid copy cleanup status | bullpen hl copy cleanup-status --output json | | Hyperliquid copy risk config | bullpen hl copy risk config --output json | | Preview Hyperliquid copy risk config update | bullpen hl copy risk config set --max-open-positions 3 --preview --output json | | Preview Hyperliquid copy risk config reset | bullpen hl copy risk config reset --preview --output json | | Copy trade stats | bullpen tracker copy stats | | Copy trade risk config | bullpen tracker copy risk | | Pause a copy trade (non-destructive) | bullpen tracker copy pause <ADDRESS> (preserves the subscription and any future mirror-sells; safer than delete) | | Resume a paused copy trade | bullpen tracker copy resume <ADDRESS> | | Snapshot before destructive action | bullpen tracker copy list --output json + bullpen tracker copy executions --output json + bullpen polymarket positions --output json | | Delete a copy trade (last resort) | bullpen tracker copy delete <ADDRESS> (see "Copy-trade lifecycle" note below) | | View outcome orderbook | bullpen polymarket orderbook <MARKET> --outcome Yes | | Preview trade fees | bullpen polymarket preview <SLUG> <OUTCOME> <AMOUNT> | | Browse categories | bullpen polymarket categories | | List events | bullpen polymarket events | | View candles | bullpen polymarket candles --outcome Yes <MARKET> | | List sports | bullpen polymarket sports-list | | List teams | bullpen polymarket teams --league nba | | Preview wrap USDC to pUSD | bullpen polymarket wrap <AMOUNT> --preview --output json | | Wrap USDC to pUSD | bullpen polymarket wrap <AMOUNT> --yes | | Preview unwrap pUSD to USDC | bullpen polymarket unwrap <AMOUNT> --preview --output json | | Unwrap pUSD to USDC | bullpen polymarket unwrap <AMOUNT> --yes | | Sweep stranded ERC-20 from Safe/Proxy | bullpen polymarket sweep-stranded --token <SYMBOL_OR_ADDR> --amount <TOKEN_AMOUNT> --yes (amount is in token units; default destination is server-selected wallet; use --to <ADDR> to override) | | Check trade readiness | bullpen polymarket preflight | | Check V2 approvals | bullpen polymarket approve --check | | Verify email | bullpen verify-email | | Install AI skills | bullpen skill install | | List AI skills | bullpen skill list | | Manage group addresses | bullpen tracker groups add-address <GROUP_ID> <ADDR> | | Auth diagnostics | bullpen doctor auth | | Force logout | bullpen logout --force | | Hyperliquid balances | bullpen hl balances | | Hyperliquid all-DEX balances | bullpen hl balances --all-dexes --output json | | Hyperliquid positions / status | bullpen hl status | | Hyperliquid all-DEX positions / status | bullpen hl status --all-dexes --output json | | Hyperliquid status single-DEX note | hl status --dex <DEX> is not supported; use hl status --all-dexes for position aggregation and hl frontend-orders --dex <DEX> for one DEX's open orders | | Hyperliquid all-DEX open orders | bullpen hl orders --all-dexes --output json | | Hyperliquid single-DEX open orders | bullpen hl orders --dex <DEX> --output json | | Hyperliquid price | bullpen hl price <COIN> | | Hyperliquid single-DEX price | bullpen hl price <COIN> --dex <DEX> --output json | | Hyperliquid single-DEX markets | bullpen hl markets --dex <DEX> --output json | | Hyperliquid single-DEX mids | bullpen hl mids --dex <DEX> --output json | | Hyperliquid funding rates | bullpen hl funding | | Hyperliquid single-DEX funding rates | bullpen hl funding --dex <DEX> --output json | | Hyperliquid single-DEX orderbook | bullpen hl orderbook <COIN> --dex <DEX> --output json | | Hyperliquid single-DEX funding history | bullpen hl funding-history <COIN> --dex <DEX> --output json | | Hyperliquid single-DEX candles | bullpen hl candles <COIN> --dex <DEX> --output json | | Hyperliquid fill history | bullpen hl fills --address <ADDR> | | Hyperliquid vault equities | bullpen hl vault list --address <ADDR> | | Hyperliquid HIP-3 DEX registry | bullpen hl perp-dexes | | Preview a TradeXYZ HIP-3 long | bullpen hl long xyz:SPCX --notional 20 --preview --output json | | Preview a TradeXYZ HIP-3 scale ladder | bullpen hl scale xyz:SPCX --side long --notional 20 --start 180 --end 179 --levels 2 --preview --output json | | Modify a TradeXYZ HIP-3 order | bullpen hl modify <OID> --dex xyz --price <PRICE> --preview --output json | | Preview cancelling a TradeXYZ HIP-3 order | bullpen hl cancel <OID> --dex xyz --preview --output json after verifying the order with bullpen hl frontend-orders --dex xyz --output json | | Close a TradeXYZ HIP-3 position | bullpen hl close xyz:SPCX --preview --output json, then rerun with --yes after review | | Verify HIP-3 position state after a write | bullpen hl status --all-dexes --output json (plain hl status shows main perps and includes a hint to use --all-dexes for HIP-3) | | Hyperliquid spot pairs | bullpen hl spot pairs | | Hyperliquid spot orderbook | bullpen hl spot orderbook --pair HYPE/USDC | | Hyperliquid spot open orders | bullpen hl spot orders --pair HYPE/USDC | | Hyperliquid spot order status | bullpen hl spot order-status --pair HYPE/USDC --oid <OID> | | Hyperliquid spot order history | bullpen hl spot order-history --pair HYPE/USDC | | Hyperliquid spot fills | bullpen hl spot fills --pair HYPE/USDC --address <ADDR> | | Preview a Hyperliquid spot IOC order | bullpen hl spot buy --pair HYPE/USDC --price 25 --size 0.5 --preview | | Submit a Hyperliquid spot IOC order | bullpen hl spot sell --pair HYPE/USDC --price 25 --size 0.5 --tif ioc --yes | | Hyperliquid spot IOC no-match recovery | If live output returns HYPERLIQUID_IOC_NO_MATCH, refresh bullpen hl spot orderbook --pair <PAIR> --output json, adjust price, rerun preview, and do not submit cleanup sells unless a fill or balance proves inventory. | | Hyperliquid spot cancel validation note | For a single-order cancel, verify the order with spot order-status or preview before live cleanup. Use spot cancel-all only when you intentionally want to clear every matching open spot order. | | Preview Hyperliquid spot cancel | bullpen hl spot cancel --pair HYPE/USDC --oid <OID> --preview | | Cancel one Hyperliquid spot order | bullpen hl spot cancel --pair HYPE/USDC --oid <OID> --yes after spot order-status/preview confirms the target order | | Preview Hyperliquid spot cancel-all | bullpen hl spot cancel-all --pair HYPE/USDC --preview | | Cancel all Hyperliquid spot orders | bullpen hl spot cancel-all --pair HYPE/USDC --yes after confirming you want every matching open spot order cleared | | Preview Hyperliquid spot TWAP | bullpen hl spot twap create --pair HYPE/USDC --side buy --base-size <BASE> --minutes <N> --preview | | Cancel Hyperliquid spot TWAP | bullpen hl spot twap cancel --pair HYPE/USDC <TWAP_ID> --preview | | Pear setup status | bullpen hl pair status --output json | | Pear login | bullpen hl pair login --yes (requires Pear auth challenge availability) | | Preview Pear setup | bullpen hl pair setup --preview --output json | | Enable Pear setup | bullpen hl pair setup --yes (requires Hyperliquid trading access; preview first and verify pair status after setup) | | Pear positions | bullpen hl pair positions --output json | | Pear orders | bullpen hl pair orders --output json | | Pear TWAP orders | bullpen hl pair twaps --output json | | Preview Pear pair open | bullpen hl pair open --long BTC=0.5 --short ETH=0.5 --size-usd 22 --preview --output json | | Preview Pear balanced pair open | bullpen hl pair open --long BTC --short ETH --size-usd 22 --rebalance --preview --output json | | Preview Pear pair open with initial TP/SL | bullpen hl pair open --long BTC=0.5 --short ETH=0.5 --size-usd 22 --take-profit 12.5 --stop-loss 5 --preview --output json | | Submit Pear pair open | bullpen hl pair open --long BTC=0.5 --short ETH=0.5 --size-usd 22 --yes (requires successful Pear setup) | | Preview Pear pair TWAP open | bullpen hl pair open --long BTC=0.5 --short ETH=0.5 --size-usd 22 --twap-minutes 30 --preview --output json | | Submit Pear pair TWAP open | bullpen hl pair open --long BTC=0.5 --short ETH=0.5 --size-usd 22 --twap-minutes 30 --yes (requires successful Pear setup) | | Preview Pear risk update | bullpen hl pair risk <POSITION_ID> --take-profit 12 --stop-loss 5 --preview --output json | | Submit Pear risk update | bullpen hl pair risk <POSITION_ID> --clear-stop-loss --yes (requires fresh Pear session) | | Preview Pear leverage update | bullpen hl pair leverage <POSITION_ID> --leverage 4 --preview --output json | | Submit Pear leverage update | bullpen hl pair leverage <POSITION_ID> --leverage 4 --yes (requires fresh Pear session) | | Preview Pear close | bullpen hl pair close <POSITION_ID> --preview | | Submit Pear close | bullpen hl pair close <POSITION_ID> --yes (requires successful Pear setup) | | Preview closing all Pear positions | bullpen hl pair close-all --preview --output json | | Cancel Pear order | bullpen hl pair cancel <ORDER_ID> --preview | | Preview Pear cancel | bullpen hl pair cancel <ORDER_ID> --preview --output json | | Cancel Pear TWAP | bullpen hl pair cancel-twap <ORDER_ID> --preview | | Preview Pear TWAP cancel | bullpen hl pair cancel-twap <ORDER_ID> --preview --output json | | Pear pair-trading tutorial | references/pear-trading.md | | Preview a long perp | bullpen hl long <COIN> --notional <USD_NOTIONAL> --preview | | Preview a base-sized long perp | bullpen hl long <COIN> --base-size <BASE> --preview | | Open a long perp | bullpen hl long <COIN> --notional <USD_NOTIONAL> --yes | | Open a post-only long limit | bullpen hl long <COIN> --notional <USD_NOTIONAL> --limit <PRICE> --tif alo --yes | | Preview a long bracket | bullpen hl long <COIN> --notional <USD_NOTIONAL> --tp <PRICE> --sl <PRICE> --preview | | Preview a scale ladder | bullpen hl scale <COIN> --side long --notional <USD> --start <PRICE> --end <PRICE> --levels <N> --preview | | Preview a stop-entry trigger | bullpen hl stop-entry <COIN> --side long --trigger-price <PRICE> --notional <USD> --preview | | Place a scale ladder | bullpen hl scale <COIN> --side long --notional <USD> --start <PRICE> --end <PRICE> --levels <N> --yes | | Open a short perp | bullpen hl short <COIN> --notional <USD> --yes | | Preview a base-sized short perp | bullpen hl short <COIN> --base-size <BASE> --preview | | Preview a short bracket | bullpen hl short <COIN> --notional <USD_NOTIONAL> --tp <PRICE> --sl <PRICE> --preview | | Preview HL take-profit | bullpen hl take-profit <COIN> --trigger-price <PRICE> --base-size <BASE> --preview | | Submit HL take-profit | bullpen hl take-profit <COIN> --trigger-price <PRICE> --base-size <BASE> --yes | | Preview HL stop-loss | bullpen hl stop-loss <COIN> --trigger-price <PRICE> --base-size <BASE> --preview | | Submit HL stop-loss | bullpen hl stop-loss <COIN> --trigger-price <PRICE> --base-size <BASE> --yes | | Show current HL TP/SL | bullpen hl tpsl show <COIN> --address <ADDR> --output json | | Preview HL TP/SL modify | bullpen hl tpsl modify <COIN> --take-profit <PRICE> --preview | | Submit HL TP/SL modify | bullpen hl tpsl modify <COIN> --take-profit <PRICE> --yes (take-profit trigger create/show/clear live-validated; full positionTpsl replacement still validation-gated) | | Preview HL TP/SL clear | bullpen hl tpsl clear <COIN> --all --preview | | Clear HL TP/SL | bullpen hl tpsl clear <COIN> --all --yes (take-profit trigger clear live-validated on the test account) | | Close a perp position | bullpen hl close <COIN> --yes | | Preview a partial base-sized close | bullpen hl close <COIN> --base-size <BASE> --preview | | Close with post-only limit | bullpen hl close <COIN> --limit <PRICE> --tif alo --yes | | Preview flatten all HL positions | bullpen hl close-all --preview | | Flatten all HL positions | bullpen hl close-all --yes | | Preview cancel HL order | bullpen hl cancel <OID> --preview | | Preview cancel all HL orders | bullpen hl cancel-all [<COIN>] --preview | | Cancel all HL orders | bullpen hl cancel-all --yes | | Preview HL leverage update | bullpen hl leverage <COIN> <X> --preview | | Preview HL order modify | bullpen hl modify <OID> --price <PRICE> --base-size <BASE> --preview | | Preview HL cloid cancel | bullpen hl cancel-by-cloid <COIN> <CLOID> --preview | | Preview HL scheduled cancel | bullpen hl schedule-cancel --time <UNIX_MS> --preview | | Preview HL margin update | bullpen hl update-margin <COIN> --amount <USD> --preview | | Watch HL fills live | bullpen hl watch fills --address 0x1111111111111111111111111111111111111111 --updates 1 --timeout 5s | | Watch HL orderbook live | bullpen hl watch orderbook BTC --updates 1 --timeout 5s | | Watch HL trades live | bullpen hl watch trades BTC --updates 1 --timeout 5s | | Watch HL candles live | bullpen hl watch candles BTC --interval 1m --updates 1 --timeout 5s | | List HL subaccounts | bullpen hl subaccount list | | Dry-run HL subaccount creation | bullpen hl subaccount create --name <NAME> --dry-run | | Create HL subaccount | bullpen hl subaccount create --name <NAME> --yes (permanent; operator-validation-gated until operator approval or explicit deferral is recorded) | | Dry-run own subaccount USDC transfer | bullpen hl subaccount transfer --from master --to <OWNED_SUBACCOUNT_ADDR> --amount <USDC> --dry-run | | Dry-run same-Hyperliquid spot send | bullpen hl send --asset <ASSET> --amount <AMOUNT> --to <OWNED_SUBACCOUNT_ADDR> --dry-run | | Dry-run HL unified-account migration | bullpen hl unify-account --dry-run | | List HL vault equities | bullpen hl vault list | | List HL agent wallets | bullpen hl agent list | | Preview HL agent approval | bullpen hl agent approve <0xAGENT> --name <NAME> --preview | | Revoke HL agent wallet | bullpen hl agent revoke <NAME> --preview | | Dry-run HL spot/perp transfer | bullpen hl transfer --amount <USD> --to perp --dry-run | | Transfer spot <-> perp | bullpen hl transfer --amount <USD> --to perp --yes | | Dry-run Hyperliquid withdraw | bullpen hl withdraw --amount <USD> --dry-run --output json | | Withdraw from Hyperliquid | bullpen hl withdraw --amount <USD> --yes | | Preview narrow Arbitrum -> HL bridge | bullpen hl deposit --amount <USD> --dry-run |

Hyperliquid default account reads and writes use the active EVM wallet as the signing address. hl status, hl balances, hl stats, and hl topology JSON can include optional signer_address for authenticated default-account reads; explicit --address public reads omit it. Table mode can show Signing as: / Reading as: context and warns on multiple EVM wallets unless --no-multi-wallet-warning or JSON output is used.

Solana commands are opt-in. Run bullpen experimental enable solana once; the setting writes [experimental] solana = true to the Bullpen config and persists across upgrades.

| Enable Solana commands | bullpen experimental enable solana | | Solana balance | bullpen solana balance | | Solana portfolio refresh | bullpen solana portfolio --refresh | | Solana token price by mint | bullpen solana price <MINT> | | Solana token metadata by mint | bullpen solana token <MINT> | | Search a Solana token | bullpen solana search <QUERY> | | Search Solana tokens with filters | bullpen solana search dog --protocol Pump.fun --min-market-cap 100000 --min-volume 10000 --output json | | Discover Memescope tokens | bullpen solana discover memescope --category newly-launched --protocol Pump.fun --output json | | Watch Memescope updates | bullpen solana discover memescope watch --limit 10 --max-events 5 --output json | | Discover Solana runners | bullpen solana discover runners --include-dev-metrics --output json | | Solana token performance | bullpen solana token performance <MINT> --timeframe all --output json | | Solana token risk | bullpen solana token risk <MINT> --output json | | Solana token holders | bullpen solana token holders <MINT> --limit 25 --output json | | Solana token traders | bullpen solana token traders <MINT> --period week --output json | | Solana token transactions | bullpen solana token transactions <MINT> --event-type swap --event-action buy --output json | | Solana token whales | bullpen solana token whales <MINT> --transaction-type buy --sort biggest --output json | | Solana token chart | bullpen solana token chart <MINT> --interval 1h --countback 50 --output json | | Solana developer metrics | bullpen solana token developer <MINT> --output json | | Preview a Solana token buy | bullpen solana buy <MINT> <USD_AMOUNT> --preview | | Buy a Solana token after preview | bullpen solana buy <MINT> <USD_AMOUNT> --yes | | Preview a Solana token sell | bullpen solana sell <MINT> <TOKEN_AMOUNT> --preview | | Sell a Solana token after preview | bullpen solana sell <MINT> <TOKEN_AMOUNT> --yes --retry-after-rate-limit | | Preview a Solana token swap | bullpen solana swap <INPUT_MINT> <OUTPUT_MINT> <INPUT_AMOUNT> --preview | | Swap Solana tokens after preview | bullpen solana swap <INPUT_MINT> <OUTPUT_MINT> <INPUT_AMOUNT> --yes --retry-after-rate-limit (success output includes referral attribution when configured) | | Preview a Solana limit buy | bullpen solana limit-buy <MINT> <USD_AMOUNT> --price <USD> --preview | | Place a Solana limit buy | bullpen solana limit-buy <MINT> <USD_AMOUNT> --price <USD> --yes | | Preview a Solana limit sell | bullpen solana limit-sell <MINT> <TOKEN_AMOUNT> --price <USD> --preview | | Place a Solana limit sell | bullpen solana limit-sell <MINT> <TOKEN_AMOUNT> --price <USD> --yes | | List Solana limit orders | bullpen solana orders --status active | | Preview Solana limit-order cancel | bullpen solana cancel-order <ORDER_KEY> --preview --output json | | Preview all Solana limit-order cancels | bullpen solana cancel-all-orders --mint <MINT> --preview --output json | | Solana activity history | bullpen solana history --limit 20 --type all | | Solana trade history | bullpen solana history --type trades --limit 20 --output json | | Solana transfer history | bullpen solana history --type transfers --limit 20 --output json | | Solana stats | bullpen solana stats --output json | | Solana closed positions | bullpen solana stats closed-positions | | Preview Solana DCA create | bullpen solana dca create <INPUT_MINT> <OUTPUT_MINT> --per-cycle 50 --cycles 3 --interval 1d --preview --output json | | List Solana DCA schedules | bullpen solana dca list --status active --output json | | Cancel Solana DCA schedule | bullpen solana dca cancel <ORDER_KEY> --preview --output json | | List hidden Solana tokens | bullpen solana token hidden --output json | | Hide Solana token row | bullpen solana token hide <MINT> --output json | | Unhide Solana token row | bullpen solana token unhide <MINT> --output json | | Preview Solana withdraw | bullpen solana withdraw <DESTINATION> <AMOUNT> --token <MINT> --preview --output json | | Preview user-paid Solana SPL withdraw | bullpen solana withdraw <DESTINATION> <AMOUNT> --token <MINT> --use-own-sol --preview --output json | | Open Solana deposit flow | bullpen solana deposit (opens web app; no raw deposit address) | | Solana short alias | sol is the alias for the solana namespace |

Hyperliquid transfer verification waits 1.5 seconds before polling and defaults to 5 attempts at 1500 ms. Advanced tuning uses BULLPEN_HYPERLIQUID_TRANSFER_VERIFY_ATTEMPTS (clamped 1-20) and BULLPEN_HYPERLIQUID_TRANSFER_VERIFY_POLL_MS (clamped 250-10000); raising attempts or lowering the interval increases Hyperliquid /info request load.

Examples

Example 1: First-Time Setup and First Trade

User says: "Set up Bullpen and buy Yes on a live sports market"

Actions: 1. Install: curl -fsSL https://cli.bullpen.fi/install.sh | bash 2. Log in: bullpen login 3. Verify: bullpen status 4. Check readiness with bullpen polymarket preflight (checks pUSD balance and V2 approvals) 5. If pUSD balance is $0, preview the wrap first: bullpen polymarket wrap 10 --preview --output json, then execute with bullpen polymarket wrap 10 --yes 6. Find a live market: bullpen polymarket discover sports --sort volume --limit 5 7. Check the price: bullpen polymarket price <MARKET_SLUG> 8. Buy shares with a price ceiling: bullpen polymarket buy <MARKET_SLUG> Yes 10 --max-price 0.20 --yes 9. Verify position: bullpen polymarket positions

Example 2: Market Research Workflow

User says: "Research the most active prediction markets"

Actions: 1. Discover trending: bullpen polymarket discover --sort volume --limit 10 --output json 2. Pick an event and drill down: bullpen polymarket event <SLUG> --output json 3. Check pricing: bullpen polymarket price <MARKET> --output json 4. View recent trades: bullpen polymarket trades <MARKET> --output json 5. Check top holders: bullpen polymarket holders <MARKET> --output json 6. Enable and check smart money: bullpen experimental enable prediction_analytics && bullpen polymarket data smart-money --output json

Example 3: Execute a Buy and Verify

User says: "Buy $50 of Yes shares on a live market and show me the position"

Actions: 1. Find a live slug: bullpen polymarket discover --sort volume --limit 5 2. Preview the order: bullpen polymarket buy <MARKET_SLUG> Yes 50 --preview 3. Execute with a price ceiling only if the preview is acceptable: bullpen polymarket buy <MARKET_SLUG> Yes 50 --max-price 0.20 --yes 4. Check position: bullpen polymarket positions --source polymarket --output json

Example 4: Set Up Smart Money Alerts

User says: "Alert me when whales trade on crypto markets"

Current public command: use bullpen tracker alerts smart. bullpen polymarket smart-alerts remains a hidden compatibility surface, not the primary documented workflow.

Actions: 1. Enable smart alerts: bullpen tracker alerts smart --smart-money true --top-traders true 2. Track specific traders: bullpen tracker add 0x1111111111111111111111111111111111111111 3. Check current alerts: bullpen tracker alerts --output json

Example 5: Automated Portfolio Monitoring

User says: "Script that checks my positions and finds markets to trade"

# Check positions
bullpen polymarket positions --output json | jq '.positions[] | {market: .title, shares: .size, value: .current_value}'

# Find high-volume active markets
bullpen polymarket discover --sort volume --min-liquidity 100000 --output json | jq '.events[].markets[]? | {title, volume, liquidity}'

# Check prices for Prediction rows on watchlist
bullpen tracker watchlist --output json | jq -r '.items[].Prediction.slug' | while read slug; do
  bullpen polymarket price "$slug" --output json
done

# Get filtered leaderboard ideas
bullpen polymarket data leaderboard --time-period 7d --sort copyability --hide-farmers --limit 5 --output json

Example 6: Diagnose and Resolve Split-Brain Wallet State

User says: "I migrated to Deposit Wallet but my funds seem to be missing"

Actions: 1. Audit all wallet kinds and balances: bullpen polymarket wallet-audit --refresh --output json 2. Review the report — look for assets on a non-server-selected wallet 3. Dry-run consolidation to confirm the plan: bullpen polymarket consolidate 4. Execute: bullpen polymarket consolidate --yes 5. Confirm trade readiness: bullpen polymarket preflight

If the failure is 1151 / L2_WALLET_DISAGREEMENT, do not treat consolidate --wallet-kind safe or any asset-movement override as the default repair. Follow the 1151 support-confirmed wallet-routing workflow above and use bullpen polymarket wallet select --kind <safe|proxy|dw> --yes only when Bullpen support confirms the exact intended server wallet kind.

Example 7: Resolve a 1151 Wallet-Routing Stop

User says: "Every trade fails with 1151 / server-vs-on-chain wallet disagreement"

Actions: 1. Refresh authoritative wallet evidence: bullpen polymarket wallet-audit --refresh --output json 2. Cross-check the same routing evidence for support: bullpen doctor wallet --output json 3. Inspect and attach these JSON fields when present: l2_status, disagreements[], hints[], and the server-selected wallet kind/address. 4. Do not retry with --wallet <OWNER_EOA> as a bypass; it pins the Bullpen signer only and does not override Safe/Proxy vs Deposit Wallet server selection. 5. If Bullpen support confirms the intended server wallet kind, run bullpen polymarket wallet select --kind <safe|proxy|dw> --yes with that exact kind. 6. If the selected wallet has never traded, run bullpen polymarket activate --yes. 7. Retry the blocked operation only after the refreshed audit and selected wallet agree.

Legacy/backcompat commands

  • bullpen polymarket wallet check — legacy/backcompat; use bullpen polymarket wallet-audit instead unless Bullpen support asks for old-format output
  • bullpen polymarket migrate-collateral — use bullpen polymarket migrate for collateral migration or bullpen polymarket consolidate for server-selected wallet consolidation

Note: bullpen polymarket reregister-deposit-wallet is NOT deprecated — it remains the explicit fix for users whose server-side Deposit Wallet registry is out of sync.

Troubleshooting

Hint Sentinels

Bullpen's source may wrap command hints as <<RUN: bullpen ...>> or <<TRY: bullpen ...>> so validation tests can prove the command path exists. Normal CLI output strips those wrappers. If a raw sentinel leaks into stderr/stdout, treat the inner bullpen ... text as the command guidance, do not include the <<RUN: / <<TRY: wrapper when running it, and report the leak as a CLI bug.

Error Fix
"Not authenticated" Run bullpen status --output json and bullpen doctor auth --output json; run bullpen login only when diagnostics report requires_login: true or AUTH_REFRESH_REJECTED_LOGIN_REQUIRED
"Market not found" The CLI will suggest similar markets ("Did you mean?"). Use slugs from bullpen polymarket search or discover, not numeric IDs. You can also paste a full Polymarket URL.
"Insufficient balance" Check bullpen portfolio balances; use the website deposit flow (bullpen deposit opens app.bullpen.fi)
"Positions API shows 0 shares" This is an indexing delay warning after a recent trade, not a real error. The order may still succeed. Wait a few seconds and retry, or run bullpen polymarket positions to verify holdings.
"Rate limited" Wait 30 seconds and retry; reduce request frequency in scripts
"Order failed" Run bullpen polymarket preflight to check approvals and balance
"Approval needed" Run bullpen polymarket approve --check to inspect approval status. Submit missing approvals with bullpen polymarket approve --yes only after reviewing the prompt/output.
"Polymarket CLOB API-key creation failed (HTTP 403)" Visit polymarket.com with the connected wallet, open Settings -> API Keys, create an API key, then rerun the CLI command
"Polymarket relayer reports degraded service (STATE_FAILED)" Recent builds added neg-risk adapter-approval insertion and index-set auto-discovery, which resolve some STATE_FAILED causes. They do NOT fix relayer- or settlement-owned failures. A repeat STATE_FAILED on the same condition — even after upgrade — is a support/escalation case: capture relayer_trace_id, condition_id, and dry-run + live-submit JSON. Do not advise generic retry.
"Polymarket relayer reports degraded service (rate limited)" or "Polymarket relayer returned HTTP 5xx" Retry in a few minutes; rate limiting and upstream 5xx are retryable relayer degradation signals
"polymarket_status" in an error Polymarket's status page is degraded for a trading-relevant component; retry shortly and check https://status.polymarket.com
"Closed-only / geo-restricted" Run bullpen doctor auth and contact Polymarket support; Bullpen support can help collect diagnostics
Turnkey 404 / "case sensitive" Run bullpen upgrade and retry. If bullpen doctor auth --output json still reports resource missing / exit 14, this is support-owned Turnkey account repair rather than a local retry loop.
"spender not in allowed list" on Safe/Proxy wallets Run bullpen upgrade then bullpen polymarket approve --yes.
"I logged out and now my balance shows $0" Run bullpen upgrade; current builds refresh wallet-routing evidence and fail closed when server evidence is inconsistent. If balances or wallet kind still look wrong, run bullpen polymarket wallet-audit --refresh --output json and send support the output.
"Copy-trade 100x portfolio inflation" Run bullpen upgrade, then bullpen portfolio overview --output json and bullpen hl status --output json. If values still disagree, run bullpen support and include which view is wrong.
"Bullpen is not authorized to perform: ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2" Contact support@bullpen.fi; this points to a server-side Turnkey policy issue that support can repair.
"Where are my funds?" / funds balances shows wrong amount after a server-side migration Run bullpen polymarket wallet-audit --refresh --include-order-credit --output json. It lists signer EOA, Safe/Proxy, Deposit Wallet, and Solana addresses with refreshed routing, on-chain balances, and order-credit evidence. Also try bullpen wallet show-addresses.
"1151: server-vs-on-chain wallet disagreement" or L2_WALLET_DISAGREEMENT Run bullpen recover polymarket --refresh --output json; follow its one next command and use bullpen support when it reports account-side repair. Do not use --wallet or wallet-kind selection as a bypass.
Suspected split-brain routing or stranded assets Run bullpen recover polymarket --refresh --output json, then preview bullpen recover funds --dry-run --output json only when the plan finds recoverable assets.
"maker address not allowed" on first trade Run bullpen fix --refresh. Follow its one next command; if it directs you to support, run bullpen support and do not retry by deploying or switching wallets.
"wallet registry validation failed" / "wallet is not registered" Run bullpen recover polymarket --refresh --output json. Follow its next_command; if support is required, run bullpen support instead of repeating approval, activation, or login.
Command not found Run bullpen upgrade to get the latest version
Config issues Run bullpen config init to reset, or bullpen config show to inspect
Other bugs Report at github.com/BullpenFi/bullpen-cli-releases/issues or Bullpen Support

Resources