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:
-
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. -
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. pauseis the non-destructive alternative.bullpen tracker copy pause <ADDRESS>moves the subscription toPaused.resumerestores it toActive. Subscription config (includingexit_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:
- Install CLI:
curl -fsSL https://cli.bullpen.fi/install.sh | bash - Log in:
bullpen login - Inspect local session state:
bullpen status(local-only; usebullpen fix --refreshfor active account and readiness checks) - Install AI skills:
bullpen skill install - 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:
- Run
bullpen statusfor local session state. - Run
bullpen fix --refreshwhen trading or balances look wrong. - Run
bullpen recover polymarket --refresh --output jsonwhen the fix output identifies a Prediction account or wallet problem. - Preview
bullpen recover funds --dry-run --output jsononly when the recovery plan finds assets on an older owned wallet. - Run
bullpen supportwhen 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 jsonfor machine-readable output. Default istable; raw/script, interactive, and explicitly unsupported streaming commands reject JSON mode. - Trading commands require
--yesto 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 asmarket,price,orderbook,holders,trades,price-history, andcandlesalso 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 CLOBPOST /ordercalls. - Outcomes are specified by displayed outcome label copied from market data.
Yes/Noand 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--configis omitted,BULLPEN_CONFIGis used before the default~/.bullpen/config.toml. Explicit--configandBULLPEN_CONFIGpaths fail closed when missing instead of silently loading defaults. Credentials still resolve viaBULLPEN_HOME, so setBULLPEN_HOMEtoo 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; usebullpen polymarket wallet-auditinstead unless Bullpen support asks for old-format outputbullpen polymarket migrate-collateral— usebullpen polymarket migratefor collateral migration orbullpen polymarket consolidatefor 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¶
- Docs: cli.bullpen.fi
- Bug reports: github.com/BullpenFi/bullpen-cli-releases/issues
- Support: bullpen-help.freshdesk.com
- Releases: github.com/BullpenFi/bullpen-cli-releases
- Full LLM docs bundle: cli.bullpen.fi/llm.txt