curl examples assume export WM_KEY="wm_…". With an OAuth token, replace -H "X-WorldMonitor-Key: $WM_KEY" with -H "Authorization: Bearer $TOKEN".
get_market_data
Real-time equity quotes, commodity prices, SGE physical-vs-COMEX gold and silver premiums, physical-premium divergence regimes, crypto prices, forex FX rates, sector performance and valuation coverage, ETF flows, and Gulf market quotes from WorldMonitor’s curated bootstrap cache. Covers the curated symbol universe only. symbols filters that snapshot rather than looking up arbitrary tickers, so an unseeded ticker returns nothing instead of triggering a fetch.
Brent and WTI quote rows identify the provider in priceSource, futures or spot in priceBasis, and the observation time in priceAt (epoch milliseconds). Yahoo Finance supplies futures quotes. Alpha Vantage supplies daily spot prices on the scheduled seed path when available. For daily spot, midnight UTC represents the provider’s observation date. Undated quotes are marked stale. Dated futures quotes go stale after 30 minutes and daily spot prices after four days.
Parameters (tool-specific):
- API endpoints:
GET /api/market/v1/get-fear-greed-index,GET /api/market/v1/get-physical-divergence-index,GET /api/market/v1/get-physical-premiums,GET /api/market/v1/get-sector-summary,GET /api/market/v1/list-commodity-quotes,GET /api/market/v1/list-crypto-quotes,GET /api/market/v1/list-etf-flows,GET /api/market/v1/list-gulf-quotes,GET /api/market/v1/list-market-quotes - Access:
free-account— callable by any signed-in account; free accounts spend the daily free allowance, Pro calls spend the daily quota. Accepts the universalsummaryargument. - Paid panel accounting: Pro and Pro Business spend one allocation for the initial market panel. Subsequent curated filters and repeated opens reuse that admission within its five-minute window. The result’s
panelRequest.tokencan be passed aspanel_requestfor authorized reads until expiry. A new refresh UUID spends one new allocation. API plans retain weighted per-tool billing. Free-account calls retain their daily free allowance. - Source scope: filters select already-seeded quotes. Neither a receipt nor refresh fetches an arbitrary symbol, an account watchlist, or new provider data. Unavailable or stale results remain eligible for retry under the same valid receipt. An upstream failure does not refund the initial allocation.
- Physical datasets are subscription-only:
physical-premiumandphysical-divergencecarry the same data as the Pro-only (tier 1) REST routes — see Pro Intelligence Suite. A signed-in free account gets the quotes, sectors, ETF flows and Fear & Greed index but not these two: they are never read for it, they are absent fromdata, and the response names them inlockedbeside anupgradeUrl. Readlockedas “not on your plan”, not as “no data”. Before this change the bundle served both to free accounts as a deliberate exception from #7433; the exception is closed. - Kind: cache read — sub-second response from Redis bootstrap cache.
- Freshness budget: the
staleflag tracks the market and sector snapshots only (30 min each). The dailyphysicalPremiumsandphysicalDivergencedatasets are monitored on/api/healthinstead. Read their timestamps and the divergence state when age matters. The divergence method is documented in Physical Precious-Metals Divergence Index. - Sector
valuationCoverageseparates write age (stale) from completeness (sourceStatus:ok,partial, ordegraded).staledescribes the seed write, not the individual records — a freshly written payload can still contain older valuations.valuationCountandexpectedValuationCountfollow asymbolsfilter when one is supplied.valuationCountcounts live and replayed records together;currentValuationCountgives the subset actually fetched this cycle and is omitted when every record is current.staleValuationSymbolslists symbols served from an older snapshot — those symbols do have values invaluations, andlastGood.fetchedAtgives their age (bounded by a 7-day snapshot TTL).unavailableSymbolslists symbols with no valuation published at all, and is disjoint fromstaleValuationSymbols.lastGoodcovers both whole records and borrowed return metrics, and includes that snapshot’s timestamp.sourceStatusisdegradedwhen no record is current,partialwhen some are stale or missing.valuationDiagnosticsis bounded per-symbol route metadata across thev7Quote,v7QuoteBatch, andquoteSummaryroutes, showing independent direct/proxy outcomes, response classes, and missing fields; it never contains credentials.
get_gold_intelligence
Read seeded precious-metal futures quotes and optional gold COT positioning, session ranges, returns, drivers, ETF holdings and central-bank reserves. No tool-specific parameters. Universal jmespath projection remains available.
The response retains source fields and optional enrichment. Prices are USD per troy ounce unless a cross-currency row names another currency; changes/returns are percentages. COT position counts are decimal strings, preserving int64 precision. ETF and reserve quantities are tonnes; ETF AUM is USD. Retain each observation date. The enrichment updatedAt does not establish freshness of every source. unavailable: true, absent enrichment and placeholder zero quotes are not confirmed zero market observations.
- API endpoint:
GET /api/market/v1/get-gold-intelligence. - Access: subscription. One signed downstream GET uses the standard API allowance weight of 2; a dedicated MCP allowance charges one call. Billing denial and retry/backoff contracts remain active.
- Output budget: 128 KiB. The tool is read-only and does not create a trade or research snapshot.
get_stock_research
Subscriber stock research through existing MarketService routes. Analysis and backtesting accept one symbol; saved-history operations accept a watchlist. Analysis generation may use paid source data and an LLM, and analysis/backtest generation can save shared research snapshots. No trading or account changes occur.
Parameters (tool-specific):
The response is
{operation, data}, retaining the existing API payload, including availability, generated timestamps, risk factors, model/fallback provenance and simulation basis. Empty saved results and unavailable analyses do not imply a zero return. Technical backtests omit point-in-time fundamentals and do not establish future performance.
- API endpoints:
GET /api/market/v1/analyze-stock,GET /api/market/v1/backtest-stock,GET /api/market/v1/get-stock-analysis-history,GET /api/market/v1/list-stored-stock-backtests. - Access: subscription. Existing MCP metering, gateway subscription checks, provider quotas, billing denial and retry/backoff contracts remain active. Cold analysis may take longer than seeded reads. The tool may save shared snapshots, so its read-only and idempotent hints are false; its destructive hint is false.
- Output budget: 512 KiB. For a large watchlist use fewer symbols/snapshots or
jmespathto select the fields needed. A budget-exceeded envelope is not complete history.
get_stock_research with {"operation":"history","symbols":["AAPL","MSFT"],"limit_per_symbol":2} reads saved analyses without generating new ones.
get_company_intelligence
Per-company corporate intelligence from SEC EDGAR and market data (#5695). Company identity resolves through the SEC’s own ticker/name registry to a CIK — by exact ticker, or by a case-insensitive exact SEC title that maps to a single CIK (no prefix guessing). An unresolved enrichment response has sources: [] and an empty company.cik; an unresolved signals response has signals: [] and an empty cik. In either view, unavailable: false means not-found, while unavailable: true means the registry or required source could not answer. The deprecated REST domain field remains an empty compatibility stub because no SEC field can confirm domain ownership; the MCP tool does not expose it. Four views multiplex the four backing REST routes.
Parameters (tool-specific):
- API endpoints:
GET /api/intelligence/v1/get-company-enrichment,GET /api/intelligence/v1/list-company-signals,GET /api/intelligence/v1/search-sec-filings,GET /api/intelligence/v1/list-material-events - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: canonical-route proxy —
enrichmentfans out to SEC submissions, Finnhub profile + earnings surprises, and news mentions;signalsuses timestamped SEC filings + news (not fiscal period ends). Each upstream is independently cached.filings-searchproxies EDGAR full-text search;material-eventsreads the seeded market-wide 8-K stream (30-minute cadence). - Freshness: every view’s payload carries its own timestamp (
enrichedAtMs,discoveredAtMs,fetchedAtMs);material-events.fetchedAtMsis the seed time of the stream snapshot.
get_prediction_markets
Return seeded prediction-market contracts from multiple venues with current probabilities, grouped into three buckets: geopolitical (including elections), tech (AI, crypto, science) and finance (economics, plus the untagged fallback for non-geopolitical records). Flagged stale when the seed is older than 90 minutes. Kalshi currently supplies no classifier tags, so source=kalshi with category=tech returns no records and other non-geopolitical Kalshi records fall back to finance. Seeded-cache read with no live fetch: weight 1 on API plans, included in the signed-in free allowance. query matches titles case-insensitively; limit caps each bucket (default 30, 0 for no cap). Dedicated paid connections reuse one panel allocation across openings and filters; refresh with a request_id starts a new one and the same ID retries it. API allowances retain per-tool billing. change24h/change7d are percentage-point moves (7d: Polymarket only); sort=move_24h|move_7d ranks by absolute move.
Parameters (tool-specific):
- Price moves: Optional
change24handchange7dare percentage-point changes on theyesPrice0–100 scale. Missing upstream values are absent; zero means no change. Kalshi supplies only 24h changes. REST returnsyesPriceChange24handyesPriceChange7don the 0–1 probability scale. - Liquidity: Optional
liquidityis resting order-book depth in USD, measured per venue. Polymarket records use Gamma’s CLOB liquidity (liquidity, equal toliquidityClob): event-level on bucket records, contract-level on country records. Kalshi records sum price times size over every yes and no bid in the contract’s order book. The venues compute depth differently, so compare thresholds within one source. The field is absent when the venue reports nothing or the order book could not be fetched. REST accepts the same filter asmin_liquidity. - API endpoints:
GET /api/prediction/v1/list-prediction-markets - Access:
free-account. Any signed-in account can call this tool. Free accounts spend their daily free allowance. API plans retain weighted per-tool billing. Accepts the universalsummaryargument. - Paid panel accounting: Pro and Pro Business spend one allocation for an opening. Canonical filters and repeated opens share the prediction admission within five minutes. The returned
panelRequest.tokenauthorizes curated prediction reads until expiry. Local category expansion reads loaded data without another tool call. Each admission permits at most 64 uncached tool executions, with separate 64-per-minute uncached and cached-replay limits. Those executions are not individual Redis commands. - Limits and refresh: The default limit is 30 per category. Zero or negative values apply no cap; positive fractions use the integer part. Default
refresh: falsereuses the prediction admission. Setrefresh: truewith a UUIDrequest_idand omitpanel_requestto start a new allocation. Retries with the same UUID, including different letter case, reuse the allocation and its original expiry. - Paid argument validation: Category and source trim whitespace and ignore letter case. Query matching ignores letter case and surrounding whitespace. Paid calls reject unknown arguments, invalid categories or sources, and non-finite or non-numeric limits before reservation. Ordinary API and free calls retain their existing filter coercion. Refresh controls and paid receipts are unavailable to API and free calls.
- Reuse and recovery: Identical canonical filters replay successful original results before summary or JMESPath projection. A new uncached filter reads the existing bootstrap and freshness metadata. A fresh, valid filtered-empty result can replay. Stale, unavailable, malformed, and unknown observations remain retryable under the receipt. Upstream failures do not refund the opening.
- Usage notices: An explicit authorized receipt read also reads the current daily allowance without reserving another unit. If the counter is unavailable or unconfirmed, contracts remain available without a numeric notice. A previous opening notice does not prove later accounting.
- Kind: cache read from the Redis bootstrap cache.
- Freshness budget: up to 1.5 h before
stale: trueis flagged (set by the seeder cron’s expected interval). - Spoken mode:
response_mode: "spoken"returns 2-3 sentences: contracts per bucket after your filters, then the leading market in the first two populated buckets (or the top two in one bucket) withyesPriceas a percentage and the 24-hour move in points. Citations carry venue, title and URL. Cannot be combined withsummary.
