Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Connect to a user's investment accounts via SnapTrade SDK and generate portfolio reports (e.g., daily total value). Use when the user wants SnapTrade-based brokerage connectivity (Webull, E*TRADE, etc.), connection portal links, account registration, or automated portfolio summaries.
Connect to a user's investment accounts via SnapTrade SDK and generate portfolio reports (e.g., daily total value). Use when the user wants SnapTrade-based brokerage connectivity (Webull, E*TRADE, etc.), connection portal links, account registration, or automated portfolio summaries.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Connect brokerage accounts through SnapTrade and generate a daily total-value report. This skill uses the official SnapTrade Python SDK (snaptrade_client) with request signing handled automatically.
Run: python3 scripts/snaptrade_order.py buy|sell TICKER UNITS --account-id <ACCOUNT_ID> [--order-type market|limit] [--limit-price <PRICE>] [--tif Day|GTC|IOC|FOK] Defaults: order type: market time in force: Day limit price: only required for limit orders Optional monitoring (poll recent orders): python3 scripts/snaptrade_order.py buy|sell TICKER UNITS --account-id <ACCOUNT_ID> --watch polls every 10s for up to 120s by default adjust with --watch-interval and --watch-seconds Watch an existing order by ID: python3 scripts/snaptrade_watch_order.py --account-id <ACCOUNT_ID> --order-id <BROKERAGE_ORDER_ID> same 10s/120s defaults, adjustable with --watch-interval and --watch-seconds Use account orders endpoint to confirm fills and report open orders to the user when asked.
You need a SnapTrade account to connect brokerages. Create a free account at https://snaptrade.com, generate your Client ID and Consumer Key, then add them to the skill config.
pip3 install -r requirements.txt
Store credentials in a local config file (not committed). user_id is generated automatically on first run: /home/openclaw/.openclaw/workspace/secrets/snaptrade.json Example: { "client_id": "YOUR_CLIENT_ID", "consumer_key": "YOUR_CONSUMER_KEY", "user_id": "<auto-generated-uuid>" }
Run: python3 scripts/snaptrade_portal.py This will: register the user if user_secret is missing store user_secret back into the config file print a connection portal URL the user must open to link accounts
Run: python3 scripts/snaptrade_reconnect.py [brokerage-name] This will: list disabled connections generate a reconnect link (optionally match by brokerage name) print a reconnect URL for the user to reβenable the connection
Run: python3 scripts/snaptrade_brokers.py This calls /snaptrade/partners and returns the allowed_brokerages list (display names).
Run: python3 scripts/snaptrade_total.py Output is JSON like: {"total_value": 123456.78, "currency": "CAD"} Implementation notes: The script first lists brokerage authorizations to detect disabled connections. It skips refresh and sync-wait for disabled ones (but still reports their last-known balances), then waits for updated sync timestamps on enabled connections. It then enumerates all current non-closed accounts via list_user_accounts and uses get_user_holdings to read each accountβs account.balance.total. Disabled connections are included in the output under disabled_connections for reporting.
Use cron to call snaptrade_total.py, format a concise WhatsApp message, then send it to the user. Only the total value is required.
scripts/snaptrade_common.py β config load/save + client creation scripts/snaptrade_portal.py β register user + generate connection portal link scripts/snaptrade_reconnect.py β generate reconnect link for disabled connections scripts/snaptrade_brokers.py β list allowed brokerages for this client scripts/snaptrade_order.py β place buy/sell orders (market/limit) with optional monitoring scripts/snaptrade_watch_order.py β watch an existing order by ID for fills scripts/snaptrade_total.py β compute total value across all accounts
Request signing is handled by the SDK via request_after_hook using consumer_key. The total is computed by summing each accountβs account.balance.total from holdings; this avoids errors when accounts are added or removed. If multiple currencies are present, the script uses the first currency encountered. Keep secrets in the local config file with chmod 600 permissions.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.