Interact with your Public.com brokerage account using the Public.com API. Able to view portfolio, get stock quotes, place trades, and get account updates. To create a Public.com account head to public.com/signup.
OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours — no server setup needed.
- Added a requirements.txt file to specify Python package dependencies. - Improved documentation in SKILL.md: clarified prerequisites, environment variable resolution order, and provided stronger security recommendations. - Updated metadata in SKILL.md (author and source). - Enhanced configuration instructions to cover both secure file location and environment variable options. - No breaking changes to script commands or API usage.
--- id: public-dot-com name: public.com description: Interact with your Public.com brokerage account using the Public.com API. Able to view portfolio, get stock quotes, place trades, and get account updates. To create a Public.com account head to public.com/signup. env: ['PUBLIC_COM_SECRET', 'PUBLIC_COM_ACCOUNT_ID'] license: Apache-2.0 metadata: author: PublicDotCom source: https://github.com/PublicDotCom/claw-skill-public-dot-com category: "Finance" tags: ["investing", "stocks", "crypto", "options", "public", "finance"] version: "1.0" --- # Public.com Account Manager > **Disclaimer:** For illustrative and informational purposes only. Not investment advice or recommendations. > > We recommend running this skill in as isolated of an instance as possible. If possible, test the integration on a new Public account as well. This skill allows users to interact with their Public.com brokerage account. ## Prerequisites - **Python 3.8+** and **pip** — Required in your OpenClaw environment. - **Public.com account** — Create one at https://public.com/signup - **Public.com API key** — Get one at https://public.com/settings/v2/api The `publicdotcom-py` SDK is required. It will be **auto-installed** on first run, or you can install manually: ```bash pip install publicdotcom-py ``` ## Configuration This skill uses two environment variables: `PUBLIC_COM_SECRET` (required) and `PUBLIC_COM_ACCOUNT_ID` (optional). Each is resolved in the following order: 1. **Secure file** — `~/.openclaw/workspace/.secrets/public_com_secret.txt` (or `public_com_account.txt`) 2. **Environment variable** — `PUBLIC_COM_SECRET` / `PUBLIC_COM_ACCOUNT_ID` Setting a value via `openclaw config set` writes to the secure file location automatically. ### API Secret (Required) If `PUBLIC_COM_SECRET` is not set: - Tell the user: "I need your Public.com API Secret. You can find this in your Public.com developer settings at https://public.com/settings/v2/api." - Once provided, save it: `openclaw config set skills.publicdotcom.PUBLIC_COM_SECRET [VALUE]` ### Default Account ID (Optional) If the user wants to set a default account for all requests: - Save it: `openclaw config set skills.publicdotcom.PUBLIC_COM_ACCOUNT_ID [VALUE]` - This eliminates the need to specify `--account-id` on each command. ## Available Commands ### Get Accounts When the user asks to "get my accounts", "list accounts", or "show my Public.com accounts": 1. Execute `python3 scripts/get_accounts.py` 2. Report the account IDs and types back to the user. ### Get Portfolio When the user asks to "get my portfolio", "show my holdings", or "what's in my account": 1. If `PUBLIC_COM_ACCOUNT_ID` is set, execute `python3 scripts/get_portfolio.py` (no arguments needed). 2. If not set and you don't know the user's account ID, first run `get_accounts.py` to retrieve it. 3. Execute `python3 scripts/get_portfolio.py --account-id [ACCOUNT_ID]` 4. Report the portfolio summary (equity, buying power, positions) back to the user. ### Get Orders When the user asks to "get my orders", "show my orders", "active orders", or "pending orders": 1. If `PUBLIC_COM_ACCOUNT_ID` is set, execute `python3 scripts/get_orders.py` (no arguments needed). 2. If not set and you don't know the user's account ID, first run `get_accounts.py` to retrieve it. 3. Execute `python3 scripts/get_orders.py --account-id [ACCOUNT_ID]` 4. Report the active orders with their details (symbol, side, type, status, quantity, prices) back to the user. ### Get History When the user asks to "get my history", "show my transactions", "transaction history", "trade history", or wants to see past account activity: **Optional parameters:** - `--type`: Filter by transaction type (TRADE, MONEY_MOVEMENT, POSITION_ADJUSTMENT) - `--limit`: Limit the number of transactions returned **Examples:** Get all transaction history: ```bash python3 scripts/get_history.py ``` Get only trades: ```bash python3 scripts/get_history.py --type TRADE ``` Get only money movements (deposits, withdrawals, dividends, fees): ```bash python3 scripts/get_history.py --type MONEY_MOVEMENT ``` Get last 10 transactions: ```bash python3 scripts/get_history.py --limit 10 ``` With explicit account ID: ```bash python3 scripts/get_history.py --account-id YOUR_ACCOUNT_ID ``` **Workflow:** 1. If `PUBLIC_COM_ACCOUNT_ID` is not set and you don't know the user's account ID, first run `get_accounts.py` to retrieve it. 2. Execute: `python3 scripts/get_history.py [OPTIONS]` 3. Report the transaction history grouped by type (Trades, Money Movements, Position Adjustments). 4. Include relevant details like symbol, quantity, net amount, fees, and timestamps. **Transaction Types:** - **TRADE**: Buy/sell transactions for equities, options, and crypto - **MONEY_MOVEMENT**: Deposits, withdrawals, dividends, fees, and cash adjustments - **POSITION_ADJUSTMENT**: Stock splits, mergers, and other position changes ### Get Quotes When the user asks to "get a quote", "what's the price of", "check the price", or wants stock/crypto prices: **Format:** `SYMBOL` or `SYMBOL:TYPE` (TYPE defaults to EQUITY) **Examples:** Single equity quote (uses default account): ```bash python3 scripts/get_quotes.py AAPL ``` Multiple equity quotes: ```bash python3 scripts/get_quotes.py AAPL GOOGL MSFT ``` Mixed instrument types: ```bash python3 scripts/get_quotes.py AAPL:EQUITY BTC:CRYPTO ``` Option quote: ```bash python3 scripts/get_quotes.py AAPL260320C00280000:OPTION ``` With explicit account ID: ```bash python3 scripts/get_quotes.py AAPL --account-id YOUR_ACCOUNT_ID ``` **Workflow:** 1. If `PUBLIC_COM_ACCOUNT_ID` is not set and you don't know the user's account ID, first run `get_accounts.py` to retrieve it. 2. Parse the user's request for symbol(s) and type(s). 3. Execute: `python3 scripts/get_quotes.py [SYMBOLS...] [--account-id ACCOUNT_ID]` 4. Report the quote information (last price, bid, ask, volume, etc.) back to the user. ### Get Instruments When the user asks to "list instruments", "what can I trade", "show available stocks", or wants to see tradeable instruments: **Optional parameters:** - `--type`: Instrument types to filter (EQUITY, OPTION, CRYPTO). Defaults to EQUITY. - `--trading`: Trading status filter (BUY_AND_SELL, BUY_ONLY, SELL_ONLY, NOT_TRADABLE) - `--search`: Search by symbol or name - `--limit`: Limit number of results **Examples:** List all equities (default): ```bash python3 scripts/get_instruments.py ``` List equities and crypto: ```bash python3 scripts/get_instruments.py --type EQUITY CRYPTO ``` List only tradeable instruments: ```bash python3 scripts/get_instruments.py --type EQUITY --trading BUY_AND_SELL ``` Search for specific instruments: ```bash python3 scripts/get_instruments.py --search AAPL ``` Limit results: ```bash python3 scripts/get_instruments.py --limit 50 ``` **Workflow:** 1. Parse the user's request for any filters (type, trading status, search term). 2. Execute: `python3 scripts/get_instruments.py [OPTIONS]` 3. Report the available instruments with their trading status back to the user. ### Get Instrument When the user asks to "get instrument details", "show instrument info", "what are the details for AAPL", or wants to see details for a specific instrument: **Required parameters:** - `--symbol`: The ticker symbol (e.g., AAPL, BTC) **Optional parameters:** - `--type`: Instrument type (EQUITY, OPTION, CRYPTO). Defaults to EQUITY. **Examples:** Get equity instrument details: ```bash python3 scripts/get_instrument.py --symbol AAPL ``` Get crypto instrument details: ```bash python3 scripts/get_instrument.py --symbol BTC --type CRYPTO ``` **Workflow:** 1. Parse the user's request for the symbol and optional type. 2. Execute: `python3 scripts/get_instrument.py --symbol [SYMBOL] [--type TYPE]` 3. Report the instrument details (trading status, fractional trading, option trading) back to the user. ### Get Option Expirations **This skill CAN list all available option expiration datesRead full documentation on ClawHub