curl examples assume export WM_KEY="wm_…". With an OAuth token, replace -H "X-WorldMonitor-Key: $WM_KEY" with -H "Authorization: Bearer $TOKEN".
get_aviation_status
Return the seeded airport disruption snapshot: one alert row per monitored airport (about 85 major airports worldwide) with iata, name, country and severity, built from AviationStack delay aggregates for international hubs, FAA ASWS delays for US airports and FAA NMS and ICAO NOTAM closures. Seeded about every 30 minutes and flagged stale after 90. The snapshot holds every monitored airport, so most rows are severity “normal” unless disrupted_only=true, and the default limit of 30 returns only part of it (0 for the whole list). Airport-level status only; no fares, schedules or flight tracks. Seeded-cache read with no live fetch: weight 1 on API plans, included in the signed-in free allowance. country is a case-insensitive name substring, iata selects one airport, limit caps the list (default 30, 0 for no cap).
Parameters (tool-specific):
- API endpoints: none directly — reads from a bootstrap-aggregate cache key (no 1:1 REST endpoint).
- 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 1.5 h before
stale: trueis flagged (set by the seeder cron’s expected interval).
get_airspace
Live ADS-B aircraft over a country. Returns Wingbits-backed civilian flights and identified military aircraft from redistributable providers, with callsigns, positions, altitudes, and headings. Answers questions like “how many planes are over the UAE right now?” or “are there military aircraft over Taiwan?”
Parameters:
- API endpoints:
GET /api/aviation/v1/track-aircraft,GET /api/military/v1/list-military-flights - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: live RPC — proxies a fetch to the WorldMonitor API on each call. Edge-runtime timeout: 8.0s.
get_maritime_activity
Return country-scoped maritime activity. view=traffic (default) returns live AIS density_zones (intensity, ships_per_day, delta_pct), disruptions (dark-ship events and chokepoint congestion), snapshot_at and bounding_box, filtered to the country box with a 3-degree pad. A missing traffic bounding box returns an error. view=ports returns port activity with a 25-result cap, including 30-day tanker calls, import/export tanker deadweight tonnage and change against the prior 30 days; trend_delta_pct is null when prior calls are zero or unknown. PortWatch port data is scheduled, can lag real time, and returns available=false for uncovered or expired data. fetched_at is the retrieval time. Requires a paid plan; one downstream fetch for either view, weight 2 on API plans. country_code accepts alpha-2, alpha-3 or an English name. Read-only.
Parameters:
- API endpoints:
GET /api/maritime/v1/get-vessel-snapshot,GET /api/intelligence/v1/get-country-port-activity - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: live RPC — proxies a fetch to the WorldMonitor API on each call. Edge-runtime timeout: 8.0s.
search_flights
Live Google Flights itineraries between two airports on one date, read from the Google Flights results page. Each itinerary has its total USD price for all passengers, stops, duration, and per-leg airline, flight number, airports, and local departure and arrival times. With return_date the price covers the round trip and the legs are the outbound journey. degraded with an error means the provider failed; an empty list without degraded means no itineraries were found. Airports are IATA codes (e.g. “JFK”, “LHR”, “DXB”).
Parameters:
- API endpoints:
GET /api/aviation/v1/search-google-flights - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: live RPC — proxies a fetch to the WorldMonitor API on each call. Edge-runtime timeout: 25.0s.
search_flight_prices_by_date
Return the cheapest Google Flights fare for each departure date between two airports across a range of at most 31 days (one results-page search per date, so a long range is slow). Each row has the date, the return date for round trips (departure plus trip_duration) and the lowest total USD price for all passengers; a date with no itineraries is omitted. degraded with an error means some or all dates failed and the list holds only the dates that answered. Prices change minute to minute. Requires a paid plan; one live search request, weight 2 on API plans, up to 25 s. Airports are IATA codes; is_round_trip needs trip_duration; passengers is 1-9. Read-only.
Parameters:
- API endpoints:
GET /api/aviation/v1/search-google-dates - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: live RPC — proxies a fetch to the WorldMonitor API on each call. Edge-runtime timeout: 25.0s.
find_webcams
Discover cameras and clusters through the existing WebcamService catalog. This reads the seeded Redis viewport index without resolving any camera media. Both webcam tools require subscription access and cost weight 2 on API plans (one unit on dedicated MCP plans).
Parameters (tool-specific):
Optional
jmespath uses the normal MCP projection. No country or category filter is offered in v1: the shared service cannot apply those exactly before truncation.
Returns state, reason, webcams (identifier, title, coordinates, country, category), clusters, totalInView, truncated, catalog, and source. totalInView is the shared service’s bounded, quantized viewport count, not an exhaustive global total. truncated reports the additional MCP row cap. catalog.cached_at is the catalog seed time; catalog.stale is true after 24 hours, on a failed seed, or when freshness is unknown. A successful empty viewport has state: "available"; missing seed data or a source failure returns state: "unavailable" and reason: "catalog_unavailable".
get_webcam_media
Resolve exactly one webcamId from find_webcams through the shared get-webcam-image handler. Each call makes at most one Windy resolution on a cache miss. WorldMonitor returns provider URLs and never proxies image bytes, relays video, or resolves media for a whole viewport.
Parameters (tool-specific):
Optional
jmespath shapes the response; Windy courtesy and the camera’s detail link remain attached in _attribution after projection.
Returns state, reason, webcamId, title, thumbnailUrl, playerUrl, windyUrl, lastUpdated, resolvedAt, refreshAfter, mediaType, urlExpiryGuidance, context, and source:
lastUpdatedis Windy’s image capture timestamp, empty when unknown. It is separate from the catalog seed time and URL resolution time.resolvedAtrecords when WorldMonitor obtained the URLs and is preserved on cache hits.refreshAfteris a conservative five-minute re-resolution deadline, not a guaranteed provider expiry. Exact token expiry is not supplied. Resolve again after this deadline or if the image returns HTTP 401/403.mediaTypeissnapshot,timelapse, orlivewhen known. Alivevalue only means Windy supplied a live player URL; the existence of a URL does not verify connectivity or current conditions.- Missing credentials, unknown cameras, missing media and provider failures return structured
state: "unavailable"results. Expired resolution metadata returnsreason: "media_expired"with empty media URLs; legacy cached URLs with no resolution timestamp returnresolution_time_unknown. No bulk retry or provider fan-out is performed. Authentication, billing-verification and rate-limit denials remain errors.
windyUrl or provider playerUrl. Windy v3 supplies images.current, player.<timespan> and urls.detail; see the v3 mapping, URL guidance, plans, and linking and courtesy terms. The existing monitor-webcams skill remains the REST/OpenAPI workflow.
get_infrastructure_status
Seeded Cloudflare Radar Internet snapshot in three datasets: outages (national and regional outages with start time, severity and cause, plus cloud and Internet service status), traffic (traffic anomalies) and ddos (the global DDoS protocol, vector and target-country summary). Physical infrastructure is not covered.
Parameters (tool-specific):
Traffic anomalies carry epoch-millisecond
startDate and endDate; endDate: 0 means ongoing. totalCount is the global anomaly count before the country filter and the limit, not the number of rows shown. The DDoS summary keeps dateRangeStart and dateRangeEnd. A valid empty list means no recorded rows; a missing cache surfaces as a null dataset.
- API endpoints:
GET /api/infrastructure/v1/list-internet-outages,GET /api/infrastructure/v1/list-internet-traffic-anomalies,GET /api/infrastructure/v1/list-internet-ddos-attacks - 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: 30 min for outages and 60 min for traffic anomalies and DDoS. The single
staleflag ORs every check.
get_internet_activity
Retired. Cloudflare Radar traffic anomalies and the global DDoS summary are the traffic and ddos datasets of get_infrastructure_status, now read from the seeded cache at weight 1 and open to signed-in free accounts. Calls to the old name still work: they run get_infrastructure_status with that dataset (both when dataset is omitted) and return a deprecation notice. The response is the cache envelope rather than {dataset, data, truncated}, and limit follows the replacement tool (default 30, 0 for no cap). A dataset the old tool never served is rejected.