Morning briefing for a personal watchlist of stocks. Shows current price, intraday change, P&L versus cost basis, distance from 52-week high, next earnings date, and analyst rating for each position. Automatically triggered by the /watchlist command when holdings are configured.
Quick portfolio health-check for all tickers in the user's watchlist.
The agent will receive the watchlist context as part of the query in this format: "Run watchlist briefing for: NVDA (100 shares @ $400.00), MSFT (50 shares @ $380.00)"
Parse all tickers, share counts, and cost basis values from that context.
Call get_market_data for all tickers in a single query:
Query: "[TICKER1] [TICKER2] [TICKER3] current price intraday change 52-week high 52-week low average volume"
Extract per ticker:
price — current priceday_change_percent — intraday % changefifty_two_week_highfifty_two_week_lowvolume vs average_volumeCall get_financials for all tickers:
Query: "[TICKERS] next earnings date analyst consensus rating price target"
Extract per ticker:
next_earnings_dateanalyst_rating (e.g. "Buy", "Hold", "Sell" or numeric equivalent)analyst_price_target — consensus 12-month targetFor each ticker that has a costBasis in the watchlist context:
pnl_percent = (current_price - cost_basis) / cost_basis * 100
If no cost basis was provided, show "—" in the P&L column.
Present a compact table, one row per ticker:
| Ticker | Price | Day % | P&L % | vs 52wk High | Next Earnings | Rating |
|---|
vs 52wk High = (price / 52_week_high - 1) × 100, shown as e.g. "-8.3%"
After the table, print one line per flag (skip if none apply):
End with:
"Deep-dive available — ask about any ticker for a full analysis, DCF valuation, or peer comparison."
Do not run full analysis unless explicitly requested.