Stock Prices
stock_pricesPrice context for a tradable ticker (stock / ETF / index-ETF / forex / crypto / commodity), split &
dividend-ADJUSTED — a DIGESTED read, NOT a raw bar series: windowed changes (1w/1mo/3mo/ytd/1y), 52-week
range + drawdown_from_52w_high_pct (how far below the peak), realized vol + realized_vol_percentile_1y
(is today's vol high vs its OWN year), trend vs SMA50/200, volume conviction (up_down_volume_ratio_1mo,
rvol). *_read fields are ready plain-language labels — quote them, don't re-derive. Reach for this on
"is it cheap/extended / how has it moved / why is it dropping" — the LEVEL that makes a news+options read
actionable (or use pulse(kind='asset') to get price + news + options in one). to = as-of date (point-in-time,
YYYY-MM-DD, features as of that day); from_ bounds history (narrowing below ~1y nulls the long windows).
For a SECTOR/theme (not one ticker) use pulse(kind='theme'), not this. 🔵 BONDS/RATES: if metric_kind ==
"yield" (a .GB govt-bond yield like US-10Y.GB or a .MM rate like SOFR.MM) the stored value is a
LEVEL, not a price — narrate each window's change_bps in BASIS POINTS, NOT change_pct (a % of a
yield is sign-inverted + the wrong unit; e.g. US-10Y 1y = "+52 bps", not "+12%"). Bonds also carry
per-window price_proxy_pct + top-level mod_duration = an L1 bond-PRICE estimate (≈ −ModDur×Δy) for
"the bond fell ~4%" narration (label it an ESTIMATE; for an exact bond return point to a bond ETF like
TLT/IEF). Volume fields (rvol, up_down_volume_ratio_1mo, …) are null for a yield — don't present
volume conviction; and yield↑ ⇒ bond price↓.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"ticker": "<ticker>"
},
"name": "stock_prices"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | As-of date `YYYY-MM-DD` — features computed as of that day (point-in-time). Omit → latest. | |
| from_ | No | Lower bound of price history `YYYY-MM-DD`. Narrowing below ~1y nulls the long windows. Price history goes back DECADES (unlike news, 2026+). | |
| ticker | Yes | A Ava Advisor ticker OR a company/asset NAME — the SERVER resolves it (no lookup step). A COMPANY/proper NAME passes AS-IS in any language (茅台/トヨタ/삼성 resolve natively — never translate a name); a generic COMMODITY/SECTOR concept must be ENGLISH (黄金→'gold', 原油→'crude oil'). Pass the user's full request in `context` to disambiguate ('apple' company vs fruit); if still ambiguous you get a `needs_confirmation` with candidates — resolve from conversation or ask, then re-call. Exact tickers pass through (Ava Advisor suffixes: Korea .KO, Taiwan .TW, commodity .COMM, crypto .CC, FX .FOREX, bond .GB, rate .MM). | |
| context | No | OPTIONAL but RECOMMENDED — paste the user's FULL request VERBATIM (any language: 'ขอราคาผลไม้ apple', 'compare Apple and Microsoft stock'). The server uses it to disambiguate which candidate each `ticker` entity means (the apple COMPANY vs the fruit COMMODITY; which Samsung). One context per call, shared by all tickers here. | |
| country | No | OPTIONAL market disambiguator — pass ONLY when `ticker` is a plain NAME that collides across markets (the Thai vs Korean 'KBANK'); omit for a distinctive name or an exact ticker (an unneeded country silently 0-matches). A country NAME or ISO-2 code ('South Korea'/'KR'); the server normalizes, so pass the NAME when unsure — never GUESS a 2-letter code ('CH' = Switzerland, not China). |