# World Monitor (remote · worldmonitor.app)

Live global intelligence: real-time markets, conflicts, country risk, chokepoints, energy. 39 tools.

- Trust score: 81/100 (high trust)
- Change this week: +7
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `worldmonitor.app`: 81/100 (this document), [markdown](https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor.md), [page](https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor)

## Channel facts

- Endpoint: `https://worldmonitor.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.13.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 11299 tokens (~161/item across 70 items; 59 tools + 11 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 73/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http app-worldmonitor-mcp https://worldmonitor.app/mcp
```

### Codex

```toml
[mcp_servers.app-worldmonitor-mcp]
url = "https://worldmonitor.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-worldmonitor-mcp": {
      "type": "remote",
      "url": "https://worldmonitor.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-worldmonitor-mcp --url https://worldmonitor.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-worldmonitor-mcp:
    url: "https://worldmonitor.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-worldmonitor-mcp": {
      "type": "http",
      "url": "https://worldmonitor.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 81, +6)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional improvement] Schema quality: unverified → good

### 2026-08-01 (score 75, −5)

- [functional regression] Schema quality: good → unverified

### 2026-07-31 (score 80, +6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 74, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 76, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Schema quality: excellent → good

### 2026-07-28 (score 76, +2)

- [functional regression] Schema quality: 8361 → 10913
- [functional] Schema quality: good → excellent
- [functional] New tool “get_temporal_anomalies”
- [functional] New tool “simulate_infrastructure_cascade”
- [functional] New tool “get_test_site_seismicity”
- [functional] New tool “get_population_exposure”
- [functional] New tool “get_signal_convergence”
- [functional] New tool “get_alert_digest”
- [functional] New tool “get_focal_points”
- [functional] New tool “get_hotspot_escalation”
- [functional] New tool “get_military_surge”

### 2026-07-27 (score 74, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 74)

First indexed and scored.

## MCP tools (59)

### `get_market_data` (~222 tokens)

Real-time equity quotes, commodity prices (including gold futures GC=F), crypto prices, forex FX rates (USD/EUR, USD/JPY

Input parameters:

- `asset_class` (array): Restrict the response to one or more asset classes. Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each per-class quote list (stocks/commodities/crypto/gulf/sectors/ETF flows) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `symbols` (array): Tickers to keep, e.g. ["AAPL","GC=F","BTC"]. Case-insensitive; matches equity/commodity/crypto/gulf quotes, sector ETFs, and ETF-flow tickers. Omit for the full snapshot.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_conflict_events` (~189 tokens)

Active armed conflict events (UCDP, Iran), unrest events with geo-coordinates, and country risk scores.

Input parameters:

- `country` (string): Filter to one country — matches the country name on conflict/unrest events and the ISO 3166-1 alpha-2 region code on risk scores (case-insensitive).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each event list to at most this many items (default 30, pass 0 for no cap).
- `min_fatalities` (number): Drop events below this fatality count (UCDP deathsBest / unrest fatalities).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_aviation_status` (~204 tokens)

Airport delays, NOTAM airspace closures, and tracked military aircraft.

Input parameters:

- `country` (string): Filter to one country by name (case-insensitive substring, e.g. "united states").
- `disrupted_only` (boolean): Drop airports with severity "normal" — keep only airports actually experiencing delays/closures. The bootstrap lists every monitored airport, so most rows are non-events without this.
- `iata` (string): Filter to a single airport by IATA code (e.g. "JFK").
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the alert list to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_news_intelligence` (~221 tokens)

AI-classified geopolitical threat news summaries, GDELT intelligence signals, cross-source signals, and security advisor

Input parameters:

- `alerts_only` (boolean): Keep only top stories flagged as alerts.
- `category` (string): Filter top news stories to one category (e.g. "conflict", "economy"; fallback is "general").
- `country` (string): Filter top stories and travel advisories to one ISO 3166-1 alpha-2 country code (case-insensitive).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list (top stories, signals, advisories) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `topic` (string): Filter GDELT intelligence to a single topic.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_natural_disasters` (~186 tokens)

Recent earthquakes (USGS), active wildfires (NASA FIRMS), and natural hazard events.

Input parameters:

- `active_only` (boolean): Keep only natural events that are still active (not closed).
- `dataset` (array): Restrict to one or more hazard datasets (earthquakes / wildfires / other natural events). Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each hazard list to at most this many items (default 30, pass 0 for no cap).
- `min_magnitude` (number): Drop earthquakes and natural events below this magnitude.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_military_posture` (~159 tokens)

Theater posture assessment and military risk scores.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the theaters list to at most this many items (default 30, pass 0 for no cap).
- `posture_level` (string): Filter to a single posture level.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `theater` (string): Filter to one theater by id (case-insensitive substring, e.g. "iran", "taiwan", "baltic", "korea").

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_cyber_threats` (~209 tokens)

Active cyber threat intelligence: malware IOCs (URLhaus, Feodotracker), CISA known exploited vulnerabilities, and active

Input parameters:

- `country` (string): Filter to one ISO 3166-1 alpha-2 country code (many threats have no country and are dropped by this filter).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the threat list to at most this many items (default 30, pass 0 for no cap).
- `min_severity` (string): Drop threats below this severity level.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `threat_type` (string): Filter to one threat type (case-insensitive substring, e.g. "malware", "vulnerability", "c2").

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_economic_data` (~203 tokens)

China macro: official-only 12-series; 5 NBS/SAFE ingestible, PBoC/GACC unavailable, no proxies; see launchReady/status.

Input parameters:

- `country` (string): Filter the country-keyed datasets (fuel-prices, BIS DSR/property, economic calendar) to one ISO 3166-1 alpha-2 code.
- `dataset` (array): Restrict the response to one or more sub-datasets. Omit for the full economic bundle.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list dataset (calendar, spending, earnings) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_country_macro` (~165 tokens)

Per-country macroeconomic indicators from IMF WEO (~210 countries, monthly cadence).

Input parameters:

- `countries` (array): ISO 3166-1 alpha-2 country codes to keep across all four IMF datasets (e.g. ["US","DE","CN"]). Omit for all ~210 countries.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Cap each IMF dataset country map to at most this many entries when no countries filter is supplied (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_eu_housing_cycle` (~193 tokens)

Eurostat annual house price index (prc_hpi_a, base 2015=100) for all 27 EU members plus EA20 and EU27_2020 aggregates.

Input parameters:

- `countries` (array): Eurostat geo codes to keep — ISO 3166-1 alpha-2, but "EL" for Greece, plus aggregates "EA20" and "EU27_2020". Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Cap the country map to at most this many entries when no countries filter is supplied (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_eu_quarterly_gov_debt` (~197 tokens)

Eurostat quarterly general government gross debt (gov_10q_ggdebt, %GDP) for all 27 EU members plus EA20 and EU27_2020 ag

Input parameters:

- `countries` (array): Eurostat geo codes to keep — ISO 3166-1 alpha-2, but "EL" for Greece, plus aggregates "EA20" and "EU27_2020". Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Cap the country map to at most this many entries when no countries filter is supplied (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_eu_industrial_production` (~177 tokens)

Eurostat monthly industrial production index (sts_inpr_m, NACE B-D industry excl.

Input parameters:

- `countries` (array): Eurostat geo codes to keep — ISO 3166-1 alpha-2, but "EL" for Greece, plus aggregates "EA20" and "EU27_2020". Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Cap the country map to at most this many entries when no countries filter is supplied (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_prediction_markets` (~210 tokens)

Prediction markets: geopolitical/elections, tagged tech (AI/crypto/science), finance/economics or untagged fallback.

Input parameters:

- `category` (string): Restrict to one market category bucket. Omit for all three. Finance also owns untagged non-geopolitical records.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each category bucket to at most this many markets (default 30, pass 0 for no cap).
- `query` (string): Keep only markets whose title contains this text (case-insensitive).
- `source` (string): Filter to one prediction-market source. Kalshi currently provides no classifier tags, so source=kalshi with category=tech returns no records.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_sanctions_data` (~199 tokens)

OFAC SDN sanctioned entities list and sanctions pressure scores by country.

Input parameters:

- `country` (string): Filter sanctioned entities and pressure scores to one ISO 3166-1 alpha-2 country code.
- `entity_type` (string): Filter to one entity type (case-insensitive substring, e.g. "vessel", "aircraft", "person", "entity").
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the entity list and recent pressure entries to at most this many items (default 30, pass 0 for no cap).
- `query` (string): Keep only sanctioned entities whose name contains this text (case-insensitive).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_displacement_data` (~167 tokens)

Refugee and IDP counts by country (UNHCR annual data).

Input parameters:

- `countries` (array): ISO 3166-1 alpha-3 country codes to keep (e.g. ["SYR","UKR","AFG"]). Matches both per-country totals and origin/asylum flows. Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the per-country and top-flow lists to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_health_signals` (~216 tokens)

Active disease outbreaks (WHO/ECDC etc.) and global air-quality station readings (OpenAQ/WAQI PM2.5).

Input parameters:

- `country` (string): Filter outbreaks and air-quality stations to one ISO 3166-1 alpha-2 country code.
- `disease` (string): Keep only outbreaks whose disease name contains this text (case-insensitive).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the outbreak and station lists to at most this many items (default 30, pass 0 for no cap).
- `min_aqi` (number): Drop air-quality stations below this AQI value.
- `signal_type` (array): Restrict to disease outbreaks, air-quality stations, or both. Omit for both.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_energy_intelligence` (~216 tokens)

Energy supply, prices, storage, disruptions, and policy: EIA petroleum stocks, electricity prices (Ember), gas storage (

Input parameters:

- `country` (string): Filter the country-keyed datasets (Ember electricity mix, gas storage, fuel shortages, energy disruptions, fossil-share) to one ISO 3166-1 alpha-2 code.
- `dataset` (array): Restrict the response to one or more energy sub-datasets. Omit for the full bundle.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list-bearing energy slice (crisis-policies, electricity regions, gas-storage countries, World Bank renewable history/regions) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_climate_data` (~198 tokens)

Climate intelligence: temperature/precipitation anomalies (vs 30-year WMO normals), climate-relevant disaster alerts (Re

Input parameters:

- `country` (string): Filter the country-tagged datasets (climate disasters, air-quality stations) to one ISO 3166-1 alpha-2 code.
- `dataset` (array): Restrict the response to one or more climate sub-datasets. Omit for the full bundle.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list dataset (anomalies, disasters, stations, news, alerts) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_infrastructure_status` (~153 tokens)

Internet infrastructure health: Cloudflare Radar outages and service status for major cloud providers and internet servi

Input parameters:

- `country` (string): Filter to one country by name (case-insensitive substring).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the outage list to at most this many items (default 30, pass 0 for no cap).
- `severity` (string): Filter to one outage severity (case-insensitive substring).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_supply_chain_data` (~233 tokens)

Dry bulk shipping stress index, customs revenue flows, and COMTRADE bilateral trade data.

Input parameters:

- `commodity` (string): Filter COMTRADE flows to one commodity — matches the HS code exactly or the commodity description by substring (e.g. "2709" or "crude").
- `dataset` (array): Restrict the response to one or more sub-datasets (dry-bulk shipping stress / customs revenue / COMTRADE flows). Omit for all.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list dataset (carriers, months, flows) to at most this many items (default 30, pass 0 for no cap).
- `reporter` (string): Filter COMTRADE flows to one reporter by numeric reporter code or reporter name (e.g. "156" or "China").
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_tariff_trends` (~223 tokens)

Global trade and pricing indicators: US tariff trends (HTS-coded), BigMac index, FAO Food Price Index, and per-country n

Input parameters:

- `country` (string): Filter the per-country datasets to one ISO 3166-1 alpha-2 country code (e.g. "US"). It is translated to alpha-3 internally for the national-debt dataset; passing an alpha-3 code directly also works.
- `dataset` (array): Restrict the response to one or more sub-datasets. Omit for the full bundle.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap each list dataset (tariff datapoints, BigMac countries, debt entries) to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_chokepoint_status` (~258 tokens)

Live maritime chokepoint status: per-chokepoint vessel transit counts (10-min cadence), rolling transit summaries, per-p

Input parameters:

- `chokepoint` (string): Filter to one chokepoint — matches by case-insensitive substring across the differing identifiers used by each dataset (e.g. "hormuz" matches "hormuz_strait", "Strait of Hormuz").
- `dataset` (array): Restrict the response to one or more sub-datasets. Omit for the full bundle.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the chokepoint-baselines list and the _countries ISO2 index to at most this many items (default 30, pass 0 for no cap). Keyed-object maps (transit-summaries, chokepoint_transits, ref, chokepoint-…
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_positive_events` (~129 tokens)

Positive geopolitical events: diplomatic agreements, humanitarian aid, development milestones, and peace initiatives wor

Input parameters:

- `category` (string): Filter to one positive-event category.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the event list to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_radiation_data` (~149 tokens)

Radiation observation levels from global monitoring stations.

Input parameters:

- `anomalous_only` (boolean): Drop observations with severity "normal" — keep only elevated/spike readings.
- `country` (string): Filter to one country by name (case-insensitive substring).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the observation list to at most this many items (default 30, pass 0 for no cap).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_research_signals` (~157 tokens)

Tech and research event signals: emerging technology events bootstrap data from curated research feeds.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the event list to at most this many items (default 30, pass 0 for no cap).
- `source` (string): Filter to one source feed (e.g. "techmeme", "dev.events", "curated").
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `type` (string): Filter to one tech-event type.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_forecast_predictions` (~160 tokens)

AI-generated geopolitical and economic forecasts from WorldMonitor's predictive models.

Input parameters:

- `domain` (string): Filter to one forecast domain (exact, case-insensitive — e.g. "shipping", "energy", "macro").
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the forecast list to at most this many items (default 30, pass 0 for no cap).
- `region` (string): Filter to one region/theater (case-insensitive substring).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_forecast_scorecard` (~96 tokens)

Forecast resolution scorecard with calibration, Brier/log score, domain and generation-origin breakdowns, and pending/ju

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_social_velocity` (~146 tokens)

Reddit geopolitical social velocity: top posts from worldnews, geopolitics, and related subreddits with engagement score

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the post list to at most this many items (default 30, pass 0 for no cap).
- `subreddit` (string): Filter to one subreddit (e.g. "worldnews", "geopolitics").
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_temporal_anomalies` (~195 tokens)

Temporal anomaly watch: current event counts vs day-of-week and seasonal baselines, scored by z-score severity.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the anomaly list to at most this many items (default 30, pass 0 for no cap).
- `min_severity` (string): Drop anomalies below this severity band.
- `region` (string): Filter to one region label (case-insensitive exact match).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.
- `type` (string): Filter to one tracked stream type (e.g. "news", "satellite_fires"); see trackedTypes in the response for what is currently baselined.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_test_site_seismicity` (~166 tokens)

Nuclear test-site seismic monitor: USGS earthquakes near known test sites scored for proliferation concern.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the event list to at most this many items (default 30, pass 0 for no cap).
- `min_concern` (string): Drop events below this concern band.
- `site` (string): Filter to one test site by name substring (e.g. "Punggye", "Lop Nur", case-insensitive).
- `summary` (boolean): Return counts + 3-item samples instead of full lists. Useful when you only need shape/size or want to budget context before drilling in.

Output parameters:

- `cached_at` (string|null): ISO-8601 timestamp of the OLDEST contributing cache key, or null when no valid seed-meta is present.
- `data` (object)
- `stale` (boolean): True when any contributing cache key is older than its per-key maxStaleMin freshness budget.

### `get_china_decision_signals` (~56 tokens)

Return the bounded six-domain China decision-signal snapshot used by the public country summary.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `access` (object)
- `generatedAt` (string)
- `groups` (array)
- `schemaVersion` (integer)

### `get_procurement_opportunities` (~301 tokens)

Search open global public-procurement opportunities through the canonical Pro route.

Input parameters:

- `buyer` (string): Case-insensitive buyer or contracting-authority text.
- `countries` (array): Additional ISO 3166-1 alpha-2 country codes. Combined with country.
- `country` (string): One ISO 3166-1 alpha-2 country code.
- `cursor` (string): Opaque nextCursor from the prior result; keep the same filters and sort when continuing.
- `deadline_from` (string): Include deadlines on or after this ISO-8601 timestamp.
- `deadline_to` (string): Include deadlines on or before this ISO-8601 timestamp.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `min_automation_score` (integer): Optional positive keyword-relevance threshold. Non-integer or non-positive values are ignored; the canonical route clamps values above 100. This is not bidding-eligibility evidence.
- `page_size` (integer): Records per call. Defaults to 10; capped at 25 to protect agent context.
- `query` (string): Case-insensitive text search across procurement titles and descriptions.
- `sort` (string): Result ordering. Defaults to newest.
- `source` (string): Official source adapter, such as sam, ted, contracts-finder, canada-buys, gets, or world-bank.

Output parameters:

- `appliedFilters` (array)
- `availability` (string)
- `countryCoverage` (string): unknown means the requested country has not been observed in this snapshot, not that there are confirmed zero results.
- `dataAvailable` (boolean)
- `fetchedAt` (string)
- `nextCursor` (string): Opaque pagination cursor. An empty string means no further pages are available.
- `opportunities` (array)
- `sourceStatuses` (array)
- `total` (number)

### `get_world_brief` (~67 tokens)

AI-generated world intelligence brief.

Input parameters:

- `geo_context` (string): Optional focus context (e.g. "Middle East tensions", "US-China trade war")
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `brief` (string): LLM-summarized geopolitical brief.
- `generatedAt` (string|number|null)
- `headlines` (array)
- `model` (string)
- `provider` (string)
- `sources` (array): Original feed articles used as grounding inputs for this brief.
- `summary` (string): Alternate naming used by some upstream variants.

### `get_country_brief` (~108 tokens)

AI-generated per-country intelligence brief.

Input parameters:

- `country_code` (string, required): ISO 3166-1 alpha-2 country code, e.g. "US", "DE", "CN", "IR"
- `framework` (string): Optional analytical framework instructions to shape the analysis lens (e.g. Ray Dalio debt cycle, PMESII-PT)
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `brief` (string): LLM-synthesized country intelligence brief.
- `country_code` (string)
- `framework` (string)
- `generatedAt` (string|number|null)
- `model` (string)
- `provider` (string)
- `sources` (array): Original feed articles used as grounding inputs for this brief.

### `get_country_risk` (~95 tokens)

Structured risk intelligence for a specific country: Composite Instability Index (CII) score 0-100, component breakdown

Input parameters:

- `country_code` (string, required): ISO 3166-1 alpha-2 country code, e.g. "RU", "IR", "CN", "UA"
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `cii` (number|null): Composite Instability Index 0-100.
- `components` (object)
- `country_code` (string)
- `sanctionsExposure` (object|array|null)
- `travelAdvisory` (object|string|null)

### `get_consumer_prices` (~87 tokens)

Per-country consumer-prices intelligence: 30-day overview, category-level inflation, retailer spread (essentials basket)

Input parameters:

- `country_code` (string, required): ISO 3166-1 alpha-2 country code. Currently supported: AE (case-insensitive).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `cached_at` (string|null)
- `country_code` (string)
- `data` (object)
- `error` (string): Present only on user-input failure (missing/unknown country_code).
- `stale` (boolean)

### `get_airspace` (~97 tokens)

Live ADS-B aircraft over a country.

Input parameters:

- `country_code` (string, required): ISO 3166-1 alpha-2 country code (e.g. "AE", "US", "GB", "JP")
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `type` (string): Filter: all flights (default), civilian only, or military only

Output parameters:

- `bounding_box` (object)
- `civilian_count` (number)
- `civilian_flights` (array)
- `country_code` (string)
- `error` (string): Present only on unknown country_code.
- `military_count` (number)
- `military_flights` (array)
- `partial` (boolean): True if one of the two upstream sources failed.
- `source` (string)
- `updated_at` (string)
- `warnings` (array)

### `get_maritime_activity` (~81 tokens)

Live vessel traffic and maritime disruptions for a country's waters.

Input parameters:

- `country_code` (string, required): ISO 3166-1 alpha-2 country code (e.g. "AE", "SA", "JP", "EG")
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.

Output parameters:

- `bounding_box` (object)
- `country_code` (string)
- `density_zones` (array)
- `disruptions` (array)
- `error` (string): Present only on unknown country_code.
- `snapshot_at` (string)
- `total_disruptions` (number)
- `total_zones` (number)

### `analyze_situation` (~130 tokens)

AI geopolitical situation analysis (DeductionPanel).

Input parameters:

- `context` (string): Optional additional geo-political context to include in the analysis
- `framework` (string): Optional analytical framework instructions to shape the analysis lens (e.g. Ray Dalio debt cycle, PMESII-PT, Porter's Five Forces)
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `query` (string, required): The question or situation to analyze, e.g. "What are the implications of the Taiwan strait escalation for semiconductor supply chains?"

Output parameters:

- `analysis` (string): Alternate naming for the body.
- `confidence` (number|string|null)
- `deduction` (string): LLM-generated analytical deduction.
- `framework` (string)
- `generatedAt` (string|number|null)
- `model` (string)
- `provider` (string)
- `signals` (array|object|null)

### `generate_forecasts` (~103 tokens)

Generate live AI geopolitical and economic forecasts.

Input parameters:

- `domain` (string): Forecast domain: "geopolitical", "economic", "military", "climate", or empty for all domains
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `region` (string): Geographic region filter, e.g. "Middle East", "Europe", "Asia Pacific", or empty for global

Output parameters:

- `forecasts` (array)
- `generatedAt` (string|number|null)
- `model` (string)
- `provider` (string)

### `search_flights` (~251 tokens)

Search Google Flights for real-time flight options between two airports on a specific date.

Input parameters:

- `cabin_class` (string): Cabin class: "economy", "premium_economy", "business", or "first" (optional, default economy)
- `departure_date` (string, required): Departure date in YYYY-MM-DD format
- `destination` (string, required): IATA code for the arrival airport, e.g. "LHR"
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `max_stops` (string): Max stops: "0" or "non_stop" for nonstop, "1" or "one_stop" for max one stop, or omit for any (optional)
- `origin` (string, required): IATA code for the departure airport, e.g. "JFK"
- `passengers` (number): Number of passengers (1-9, default 1)
- `return_date` (string): Return date in YYYY-MM-DD format for round trips (optional)
- `sort_by` (string): Sort order: "price" (cheapest), "duration", "departure", or "arrival" (optional)

Output parameters:

- `error` (string): Present when upstream returned a usable error message.
- `flights` (array)
- `search_metadata` (object|null)

### `search_flight_prices_by_date` (~254 tokens)

Search Google Flights date-grid pricing across a date range.

Input parameters:

- `cabin_class` (string): Cabin class: "economy", "premium_economy", "business", or "first" (optional, default economy)
- `destination` (string, required): IATA code for the arrival airport, e.g. "LHR"
- `end_date` (string, required): End of the date range in YYYY-MM-DD format
- `is_round_trip` (boolean): Whether to search round-trip prices (default false). Requires trip_duration when true.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `origin` (string, required): IATA code for the departure airport, e.g. "JFK"
- `passengers` (number): Number of passengers (1-9, default 1)
- `sort_by_price` (boolean): Sort results by price ascending (default false, sorts by date)
- `start_date` (string, required): Start of the date range in YYYY-MM-DD format
- `trip_duration` (number): Trip duration in days — required when is_round_trip is true (e.g. 7 for a one-week trip)

Output parameters:

- `error` (string)
- `prices` (array)
- `search_metadata` (object|null)

### `get_commodity_geo` (~95 tokens)

Global mining sites with coordinates, operator, mineral type, and production status.

Input parameters:

- `country` (string): Filter by country name (e.g. "Australia", "Chile")
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `mineral` (string): Filter by mineral type (e.g. "Gold", "Copper", "Lithium")

Output parameters:

- `sites` (array)
- `total` (number)

### `get_signal_convergence` (~175 tokens)

Geographic signal convergence: grid cells where protests, military activity, naval movements, and earthquakes co-occur.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `lat` (number): Latitude of the area of interest; requires lon and radius_km as well.
- `lon` (number): Longitude of the area of interest; requires lat and radius_km as well.
- `min_domains` (number): Distinct signal domains required per cell, 2-5 (default 3); 5 is a compatibility safety threshold that yields no alerts while four domains are ingested.
- `radius_km` (number): Positive radius in km around lat/lon to keep alerts for; requires lat and lon (maximum 20,000).

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the contributing feeds.
- `data` (object)
- `error` (string): Present only on a user-input failure; the envelope keys are still returned.
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `get_focal_points` (~107 tokens)

Focal-point detection: entities where news coverage and live map signals converge, ranked by multi-signal score.

Input parameters:

- `country_code` (string): Filter focal points to one country (ISO-2) and entities the registry relates to it.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the focal point list (default 10, pass 0 for no cap).

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the contributing feeds.
- `data` (object)
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `simulate_infrastructure_cascade` (~104 tokens)

Infrastructure cascade simulation: what fails downstream when a cable, chokepoint, pipeline, or port is disrupted.

Input parameters:

- `disruption_level` (number): Initial failure severity between 0.1 and 1 (default 1).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `source_id` (string): Node id to disrupt (see the no-argument catalog for valid ids).

Output parameters:

- `cached_at` (string|null): Fetch time of the seeded cable table.
- `data` (object)
- `error` (string): Present only on a user-input failure; the envelope keys are still returned.
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `known_id_sample` (array): Sample of valid node ids; present only alongside an unknown-source_id error.
- `stale` (boolean): True when the cable table is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `get_military_surge` (~80 tokens)

Military surge watch: theater aircraft postures, foreign-presence detections, and seeder-computed surge alerts.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `theater` (string): Filter to one theater by id or name substring (case-insensitive).

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the contributing feeds.
- `data` (object)
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `get_population_exposure` (~175 tokens)

Population exposure: estimated people within the impact radius of active earthquakes, wildfires, and conflict events.

Input parameters:

- `event_source` (string): Which event feeds to enrich in events mode (default all).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `lat` (number): Latitude for point mode.
- `limit` (number): Cap the enriched event list in events mode (default 20, pass 0 for no cap).
- `lon` (number): Longitude for point mode.
- `mode` (string): events enriches live feeds (default); point takes lat/lon; countries lists the population table.
- `radius_km` (number): Radius in km for point mode (default 50, clamped to 1000).

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the feeds read; null in point and countries modes.
- `data` (object)
- `error` (string): Present only on a user-input failure; the envelope keys are still returned.
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `get_alert_digest` (~72 tokens)

Cross-domain alert digest: everything that tripped a threshold today, in one rollup.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `view` (string): today lists current threshold trips (default); weekly adds trend context.

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the contributing feeds.
- `data` (object)
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `get_hotspot_escalation` (~112 tokens)

Hotspot escalation scores: the 29 curated intelligence hotspots ranked by dynamic escalation on a 1-5 scale.

Input parameters:

- `hotspot_id` (string): Return only this curated hotspot id (see any full response for the id list).
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (number): Cap the ranked hotspot list (default 29, the full curated set; pass 0 for no cap).

Output parameters:

- `cached_at` (string|null): Oldest fetch time across the contributing feeds.
- `data` (object)
- `error` (string): Present only on a user-input failure; the envelope keys are still returned.
- `failed_inputs` (array): Subset of unavailable_inputs whose Redis read failed rather than returning a genuine miss.
- `known_ids` (array): All curated hotspot ids; present only alongside an unknown-hotspot_id error.
- `stale` (boolean): True when any contributing feed is older than its freshness budget.
- `unavailable_inputs` (array): Required cache keys that were missing or unreadable; their contribution is not treated as quiet.

### `search_intel_history` (~257 tokens)

Semantic search over WorldMonitor's accumulating store of past intelligence events (Pro), ranked by similarity.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 country code, uppercase, e.g. "UA". Omit to search every country. Events not attributable to a single country are excluded when this is set.
- `domain` (string): Restrict to one producing domain. Omit to search every domain.
- `from` (number): Earliest occurredAt to consider, Unix epoch milliseconds, inclusive. Omit for no lower bound.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum matches to return. The route returns 16 when this is omitted and caps MCP responses at 16 to stay within the output budget.
- `query` (string, required): Free-text search phrase, e.g. "artillery strikes near Kharkiv". Embedded with the same model the stored vectors were written under, so phrasing close to how an analyst would describe the event ranks…
- `to` (number): Latest occurredAt to consider, Unix epoch milliseconds, inclusive. Omit for no upper bound.

Output parameters:

- `partial` (boolean): True when the bounded candidate window may omit further matches; do not treat the result as exhaustive.
- `query` (string): Echo of the submitted query, so a caller running several searches can pair each response back to its input.
- `records` (array): Matching events, most similar first.
- `upstreamUnavailable` (boolean): True when the embedding provider or the history store could not be reached. `records` is then empty because the lookup failed — never read that as "no event matched".

### `get_intel_timeline` (~203 tokens)

Reverse-chronological read of WorldMonitor's accumulating intelligence-event history for one domain or country (Pro).

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 country code, uppercase, e.g. "UA". Required unless domain is set. Supplying both narrows to their intersection.
- `domain` (string): Restrict to one producing domain. Required unless country is set.
- `from` (number): Earliest occurredAt to return, Unix epoch milliseconds, inclusive. Omit for no lower bound.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum events to return. The route returns 40 when this is omitted and caps MCP responses at 40 to stay within the output budget.
- `to` (number): Latest occurredAt to return, Unix epoch milliseconds, inclusive. Omit for no upper bound.

Output parameters:

- `partial` (boolean): True when the bounded post-filter window may omit older matching events.
- `records` (array): Scoped history, newest first.
- `upstreamUnavailable` (boolean): True when the history store could not be reached. `records` is then empty because the read failed — never read that as "nothing happened in this window".

### `get_similar_events` (~205 tokens)

Historical precedents for a situation you describe, drawn from WorldMonitor's accumulating event store (Pro).

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 country code, uppercase, e.g. "EG". Omit to search every country — usually the right choice, since a precedent elsewhere is still a precedent.
- `domain` (string): Restrict precedents to one producing domain. Omit to search every domain.
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum precedents to return. The route returns 8 when this is omitted and caps MCP responses at 8 to stay within the output budget.
- `situation` (string, required): Description of the situation to find precedents for, e.g. "a naval blockade closes a major grain export corridor for weeks". Longer than a search phrase on purpose — more context ranks better.

Output parameters:

- `partial` (boolean): True when the bounded candidate window may omit further precedents; do not treat an empty result as proof of novelty.
- `records` (array): Precedents, most similar first.
- `situation` (string): Echo of the submitted situation text, so a caller running several lookups can pair each response back to its input.
- `upstreamUnavailable` (boolean): True when the embedding provider or the history store could not be reached. `records` is then empty because the lookup failed — never read that as "no precedent exists".

### `get_company_intelligence` (~285 tokens)

Per-company corporate intelligence from SEC EDGAR and market data.

Input parameters:

- `end_date` (string): filings-search only: latest filing date (YYYY-MM-DD).
- `forms` (string): filings-search only: comma-separated form filter, such as "8-K" or "10-K,10-Q".
- `item_code` (string): material-events only: filter to one 8-K item code, such as "5.02".
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Result cap. Honored up to 25 for filings-search and up to 100 for material-events; a value above the view's own maximum is rejected rather than silently clamped. Ignored by the enrichment and signals…
- `name` (string): Company name fallback when no ticker is known; case-insensitive exact SEC title match only, and only when that title maps to a single CIK. Prefer ticker.
- `query` (string): filings-search only: full-text query. Required for that view.
- `start_date` (string): filings-search only: earliest filing date (YYYY-MM-DD).
- `ticker` (string): Exchange ticker symbol, such as AAPL. Preferred company key for enrichment and signals.
- `view` (string): Defaults to enrichment.

Output parameters:

- `enrichment` (object)
- `error` (string): Present only on user-input failure.
- `events` (object)
- `search` (object)
- `signals` (object)
- `view` (string)

### `describe_tool` (~60 tokens)

Return the full uncompressed definition of one tool by name.

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `tool_name` (string, required): Exact tool name from tools/list.

Output parameters:

- `annotations` (object)
- `available` (array)
- `description` (string)
- `error` (string): Present only on user-input failure.
- `hint` (string)
- `inputSchema` (object)
- `name` (string)
- `outputSchema` (object)
- `requested` (string)

### `classify_event` (~84 tokens)

Classify a supplied news headline or short text into a threat category and severity via the enum-validated WorldMonitor

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `text` (string, required): Headline or short excerpt to classify (1-500 characters). Longer input is rejected, not truncated.

Output parameters:

- `classification` (object|null): null when the classifier could not produce an enum-valid result for this text.
- `error` (string): Present instead of a result when input validation fails.

### `extract_entities` (~195 tokens)

Extract named entities deterministically — registry entities (companies, indices, commodities, crypto, sectors, countr

Input parameters:

- `category` (string): When text is omitted, Restrict to one full-digest category: politics, us, europe, middleeast, tech, ai, finance, commodities, gov, africa, latam, asia, energy, thinktanks, crisis, layoffs, intel. Ech…
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum entities per list. Defaults to 20.
- `text` (string): Optional text to extract from (max 2048 characters; longer input is rejected). When omitted, the tool aggregates entities across recent headlines.

Output parameters:

- `category` (string|null): Applied full-digest category filter in headlines mode; null when scanning every category. Omitted in text mode.
- `entities` (array): Registry-matched entities. In text mode each match carries matchType/matchedText/confidence; in headlines mode entities aggregate to mentionCount/avgConfidence.
- `error` (string): Present instead of a result when input validation fails.
- `generatedAt` (string): Digest snapshot time (headlines mode only).
- `headlineCount` (number): Headlines scanned (headlines mode only).
- `mode` (string): "text" when input text was supplied, "headlines" when aggregating the digest.
- `note` (string): Present in headlines mode when category did not match any digest key (typo or missing bucket).
- `patternEntities` (array)

### `get_news_clusters` (~188 tokens)

Current topic clusters over the live headline digest, computed with the same Jaccard clustering the dashboard uses.

Input parameters:

- `category` (string): Restrict to one full-digest category: politics, us, europe, middleeast, tech, ai, finance, commodities, gov, africa, latam, asia, energy, thinktanks, crisis, layoffs, intel. Echoed as `category` in t…
- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum clusters returned. Defaults to 10.
- `min_sources` (integer): Only return clusters carrying at least this many DISTINCT sources (outlets), not merely this many member headlines. Defaults to 1.

Output parameters:

- `category` (string|null): Applied full-digest category filter; null when clustering every category.
- `clusters` (array)
- `generatedAt` (string)
- `headlineCount` (number)
- `note` (string): Present when category did not match any digest key (typo or missing bucket).
- `totalClusters` (number): Cluster count before limit/min_sources filtering.

### `get_keyword_spikes` (~122 tokens)

Trending keyword, CVE, and APT/FIN threat-group spikes versus baseline, using the same term-candidacy and spike-decision

Input parameters:

- `jmespath` (string): Optional JMESPath projection applied to the response. See initialize.instructions for grammar and examples.
- `limit` (integer): Maximum spikes returned. Defaults to 10.
- `min_count` (integer): Minimum recent-window story count for a term to spike. Defaults to 5.
- `window_hours` (integer): Recent window to test for spikes. Defaults to 2.

Output parameters:

- `baseline_hours` (number): Exact hours in the sampled pre-window baseline cohort. 0 means no baseline was available and spikes is empty.
- `generatedAt` (string)
- `note` (string): Present when the accumulator was unavailable/empty or the story store was only partially readable.
- `sample_truncated` (boolean): True when either bounded cohort hit its 800-story cap.
- `spikes` (array)
- `story_count` (number): Stories this computation saw across the separately bounded recent and baseline cohorts.
- `window_hours` (number)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor#diagnostics

## Score history

- 2026-08-03: 81
- 2026-08-02: 81
- 2026-08-01: 75
- 2026-07-31: 80
- 2026-07-30: 74
- 2026-07-29: 76
- 2026-07-28: 76
- 2026-07-27: 74
- 2026-07-26: 74

## Links

- Remote endpoint: https://worldmonitor.app/mcp
- Repository: https://github.com/koala73/worldmonitor
- Website: https://www.worldmonitor.app/
- Changelog RSS feed: https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-worldmonitor-mcp/worldmonitor
