OpenClaw Skillv0.1.5

public-dot-com

public-dot-comby public-dot-com
Deploy on EasyClawdfrom $14.9/mo

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.

How to use this skill

OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours — no server setup needed.

  1. Sign up on EasyClawd (2 minutes)
  2. Connect your Telegram bot
  3. Install public-dot-com from the skills panel
Get started — from $14.9/mo
7stars
2,143downloads
0comments
7versions

Latest Changelog

- 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.

Tags

latest: 0.1.5

Skill Documentation

---
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 dates 
Read full documentation on ClawHub
Security scan, version history, and community comments: view on ClawHub