curl examples assume export WM_KEY="wm_…". With an OAuth token, replace -H "X-WorldMonitor-Key: $WM_KEY" with -H "Authorization: Bearer $TOKEN".
get_global_air_activity
Observed military aircraft from the seeded flight snapshot: total, type breakdown, overlapping geographic theater counts, and count outside every theater. Only redistribution-cleared providers contribute. Confirmed on-ground tracks are excluded; unknown ground status remains included. Untyped aircraft remain in totals. Theater counts overlap, so they must not be summed to obtain the total.
Parameters (tool-specific): none.
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis over
military:flights:v1; no new provider or seeder. - Freshness budget: flights 30 min before
stale: true;cached_atis derived fromseed-meta:military:flights.fetchedAt, not the snapshot’sfetchedAt. Missing or invalid seed metadata yieldscached_at: nullandstale: true. - Coverage:
data.coveragepreservesglobalorregional; absent or unrecognized scope becomesunknown. Regional and unknown scope setdata.partial: true, so counts describe an observed subset, never a worldwide total. Global scope still does not imply every military aircraft is observable. Coverage and freshness are independent. Missing snapshots fail explicitly.
get_military_surge
Military surge watch: per-theater aircraft postures (fighters, tankers, AWACS, reconnaissance, transports, bombers, drones), foreign-presence detections, and the flights seeder’s own surge alerts reported as a separate seeded_surges block (it uses different baselines than the snapshot engine — the two are never silently merged).
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis; posture aggregates are also served by
get_military_posture). - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared dashboard engine over Redis seed caches.
- Freshness budget: flights 30 min, theater posture 60 min before
stale: true.
get_military_posture
Return the seeded theater posture assessment: for each global theater (Iran, Taiwan, Baltic, Korea and others) a posture level, military risk score and the aggregated positioning and escalation signals behind it. Flagged stale after 2 hours; theater-level summaries only, no individual aircraft or vessel tracks. Seeded-cache read with no live fetch: weight 1 on API plans, included in the signed-in free allowance. theater is a case-insensitive id substring, posture_level filters one level exactly, limit caps the list (default 30, 0 for no cap).
Parameters (tool-specific):
- API endpoints:
GET /api/military/v1/get-theater-posture - 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. - Kind: cache read — sub-second response from Redis bootstrap cache.
- Freshness budget: up to 2 h before
stale: trueis flagged (set by the seeder cron’s expected interval).
get_hotspot_escalation
Hotspot escalation scores: the 29 curated intelligence hotspots ranked on the documented 1-5 composite scale. News pressure, country instability, geographic signal convergence, and nearby military activity are normalized to 0-100 components, weighted 35/25/25/15, and blended 30/70 with each hotspot’s curated static baseline — the same math the dashboard map publishes.
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared dashboard engine over Redis seed caches.
- Freshness budget: up to 30 min for news/risk/flights, 120 min for unrest before
stale: true.
get_population_exposure
Population exposure: estimated people within the impact radius of active earthquakes, wildfires, and conflict events, using the dashboard’s country-density approximation (nearest priority-country centroid × event-type radius disc). Coarse screening numbers — there is no city-level population dataset behind them.
Parameters (tool-specific):
- API endpoints:
GET /api/displacement/v1/get-population-exposure - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared exposure core; events mode reads Redis seed caches.
- Freshness budget: per-feed (earthquakes 30 min, wildfires 360 min, conflicts 1440 min); point and countries modes are computed,
cached_at: null.
simulate_infrastructure_cascade
Infrastructure cascade simulation: breadth-first failure propagation across the seeded submarine-cable table plus the curated pipeline, port, and chokepoint registries. Call with no source_id for the catalog of simulatable node ids grouped by type; chained capacity math multiplies along paths so distant impacts shrink realistically.
Pass countries to compare subsea cable exposure. Each data.exposure entry lists the cables that land in the country, its distinct landing stations, the chokepoints those cables cross with the share of the country’s cables each one carries (largestSingleChokepointShare is the worst single closure), and activeIncidents for cables the NGA notice monitor flags FAULT or DEGRADED. A cable with no incident has no matched notice; that does not confirm it is healthy. health_available: false means the cable-health snapshot could not be read. Chokepoint crossings combine simplified route geometry with landing points: a cable that lands inside the Persian Gulf or Red Sea and also outside it crosses the exit between them.
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — dependency graph built per request from the seeded cable table.
- Freshness budget: up to 25200 min (~17.5 days) for the weekly cable table before
stale: true.
get_china_decision_signals
Returns the bounded six-domain China decision-signal snapshot used by the
country summary. Macro-financial, policy/enforcement, cross-Strait activity,
corporate disclosures, corridor conditions, and activity nowcast groups share
one stable order and the status vocabulary available, partial, stale, or
unavailable.
Every returned item retains canonical provenance, publisher type, source and
original reference, translation state, observation/effective/publication/
retrieval times, revision and supersession, confidence, corroboration, and
freshness claims. The tool returns the same bounded items as the public RPC; it
does not expose detailed bilateral trade rows or operator-only source health.
- Parameters: none, apart from the optional common
jmespathprojection. - API endpoint:
GET /api/intelligence/v1/get-china-decision-signals - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: canonical RPC over the Railway-composed cache.
- Refresh cadence: every 15 min; each group can degrade independently.
get_alert_digest
Cross-domain alert digest: every threshold trip across seven domains (country instability, military surges, cable health, ongoing outages, temporal anomalies, thermal escalation, shipping stress) using each producer’s own severity vocabulary — no invented thresholds. Quiet domains and unavailable caches are listed separately so silence is never mistaken for calm.
The weekly view adds weekly.cii_movers with up to five risers and five fallers across the 31 CII countries. Each row compares the latest point with the last point on or before the requested start day and reports its actual fromDate. Changes within ±1 point are excluded. Endpoints must share the current methodology; countries without comparable history appear in insufficient_history. as_of is the latest eligible source time. Missing history appears as cii_history in data.unavailable, and history older than 30 minutes makes the response stale. History accrues from activation, so the first seven-day ranking needs at least seven days of observations.
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared digest core over seven Redis seed caches.
- Freshness budget: per-feed (30-360 min);
stale: truewhen any contributing feed exceeds its budget.
get_signal_convergence
Geographic signal convergence: one-degree grid cells where protests, military flights, naval movements, and earthquakes co-occur inside a 24-hour window. Alerts carry coordinates, contributing domains, a reverse-geocoded location name, and a breadth/volume score. Pass lat/lon/radius_km together to narrow to one area.
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared dashboard engine over Redis seed caches.
- Freshness budget: per-feed (flights 30 min, unrest 120 min, earthquakes 30 min, fleet 720 min);
stale: truewhen any feed exceeds its budget.
get_focal_points
Focal-point detection: entities where news coverage and live map signals converge, ranked by multi-signal score. News story clusters are entity-matched against the curated registry, cross-referenced with cross-source escalation signals, and scored with the same engine the dashboard runs. Includes an application-authored ai_context block; source headlines remain separate in focal-point evidence. Also includes mapping-coverage counters.
Parameters (tool-specific):
- API endpoints: none (MCP-only derived analysis).
- Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: derived analysis — shared dashboard engine over Redis seed caches.
- Freshness budget: up to 30 min per contributing feed before
stale: true.
