Collect a single Schwab MCP data snapshot (accounts, quotes, indicators, option chains) with a five-minute cache so trading agents can reuse consistent inputs. Use whenever an options persona needs fresh risk, market, or chain data before recommending trades.
View on GitHubjkoelker/zephyr
trading-tools
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/jkoelker/zephyr/blob/main/skills/schwab-data-sweep/SKILL.md -a claude-code --skill schwab-data-sweepInstallation paths:
.claude/skills/schwab-data-sweep/# Schwab Data Sweep Reliable trade proposals in this workspace start from the same broker payloads. This skill centralizes that workflow so every persona reuses the identical snapshot and cache policy. ## Inputs - `primary_symbol` (string): Underlying or index to analyze. Prefix indices/volatility products with `$` (e.g., `$SPX`, `$VIX`, `$VIX1D`) to avoid equity substitutions. - `additional_symbols` (list, optional): Extra tickers for quotes (e.g., the wheel watchlist or hedge ETFs). Keep the list tight to minimize MCP latency. - `include_option_chain` (bool, default true): Fetch option chain data for `primary_symbol`. - `indicators` (list, optional): Indicator payloads to compute. Supported values: `atr`, `rsi`, `expected_move`, `historical_volatility`. - `force_refresh` (bool, default false): Ignore cached payloads even if they are younger than five minutes. ## Outputs Structured dictionary stored in memory for the calling agent: - `timestamp`: ISO string + broker timezone from `mcp__schwab__get_datetime`. - `account`: Payload from `mcp__schwab__get_account_with_positions()`. - `quotes`: Map of symbol → quote (from `mcp__schwab__get_quotes()`). - `historical`: Optional OHLCV data (from `mcp__schwab__get_price_history_every_day()` for 1M window). - `option_chain`: Optional option chain snapshot (when requested). - `indicators`: Any computed indicators with metadata about lookback and parameters. ## Instructions 1. **Cache Check** - Maintain a per-symbol cache keyed by `primary_symbol` + sorted `additional_symbols`. - Reuse the existing snapshot when `force_refresh` is false and the cached timestamp is ≤5 minutes old. - When reusing, surface the original Schwab timestamp so downstream persona messaging reflects the data age. 2. **Authentication Guardrail** - Call `mcp__schwab__get_account_numbers()` once per session if the MCP client indicates an unauthenticated state. Abort and return a `BLOCK` flag if authentication fails. 3. **Account & Capital