AIDEVELOPER TOOLS

Travel Risk Intelligence MCP Server

Travel risk intelligence for any global destination, delivered through 8 MCP tools backed by real-time government and international data sources. Corporate travel managers, security teams, and AI travel agents get a quantified Destination Risk Score (0-100) across natural hazard, health, security, and weather dimensions — plus a composite advisory of SAFE, EXERCISE_CAUTION, RECONSIDER_TRAVEL, or DO_NOT_TRAVEL.

Try on Apify Store
$0.10per event
1
Users (30d)
12
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.10
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

assess_destination_risks
Estimated cost:$10.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
assess_destination_riskWeather + disasters + country profile risk score.$0.10
check_active_alertsNOAA + GDACS real-time alert monitoring.$0.05
analyze_health_risksWHO GHO indicators + country health profile.$0.06
evaluate_security_riskCrime data + Interpol + regional security.$0.08
plan_travel_windowWeather forecasts + alert patterns.$0.05
score_multi_stop_itineraryRisk assessment for each stop (up to 5).$0.15
compare_destination_alternativesSide-by-side destination risk comparison.$0.12
generate_travel_briefingAll 8 sources, 4 scoring models, travel advisory.$0.25

Example: 100 events = $10.00 · 1,000 events = $100.00

Connect to your AI agent

Add this MCP server to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

MCP Endpoint
https://ryanclinton--travel-risk-intelligence-mcp.apify.actor/mcp
Claude Desktop Config
{
  "mcpServers": {
    "travel-risk-intelligence-mcp": {
      "url": "https://ryanclinton--travel-risk-intelligence-mcp.apify.actor/mcp"
    }
  }
}

Documentation

Travel risk intelligence for any global destination, delivered through 8 MCP tools backed by real-time government and international data sources. Corporate travel managers, security teams, and AI travel agents get a quantified Destination Risk Score (0-100) across natural hazard, health, security, and weather dimensions — plus a composite advisory of SAFE, EXERCISE_CAUTION, RECONSIDER_TRAVEL, or DO_NOT_TRAVEL.

This MCP server runs on the Apify platform in always-on Standby mode, so your AI assistant queries it without cold starts. It orchestrates 8 parallel data feeds — NOAA weather alerts, GDACS disaster alerts, WHO Global Health Observatory, UK Police crime data, Interpol red notices, REST Countries profiles, weather forecasts, and Nominatim geocoding — then processes them through four independent scoring models before returning structured JSON your agent can act on immediately.

What data can you access?

Data PointSourceExample
📡 Active weather alerts by severity tierNOAA National Weather Service"Tornado Warning — extreme severity, 3 active alerts"
🌊 Global disaster alerts (earthquakes, floods, cyclones)GDACS EU Joint Research Centre"Red alert — Category 4 cyclone, Philippines"
☀️ Multi-day weather forecast with extreme-condition flagsWeather Forecast ServiceTemp 47°C, wind 75 km/h — extreme heat flag
🏥 Disease prevalence and epidemic indicatorsWHO Global Health ObservatoryLife expectancy 58 yrs, malaria risk present
🦠 Health infrastructure quality (sanitation, water access)WHO GHO + REST CountriesSanitation access 38%, Gini coefficient 52.1
🔒 Crime density by geographic areaUK Police Crime Data28 crime records — high crime area
🚨 Internationally wanted persons linked to regionInterpol Red Notices4 red notices linked to region
🌍 Country demographics, borders, regional classificationREST Countries6 border countries, Middle East subregion
📍 Coordinate resolution for geographic risk mappingNominatim Geocoderlat: -1.2921, lon: 36.8219
📊 Composite Destination Risk Score (0-100)Scoring engineScore: 67 — HIGH
⚠️ Four-tier advisory classificationComposite modelSAFE / EXERCISE_CAUTION / RECONSIDER_TRAVEL / DO_NOT_TRAVEL
🗺️ Per-dimension risk breakdown with explanatory signalsScoring enginehazard: 18, health: 20, security: 22, weather: 7

Why use Travel Risk Intelligence MCP Server?

Manually researching destination safety before travel means tabbing between government advisory websites, NOAA weather pages, WHO disease bulletins, and news feeds — then synthesizing it all into something consistent and auditable. For a corporate travel team managing dozens of trips a week, that process takes hours and produces risk assessments that are incomparable across destinations.

This MCP server automates the entire travel risk assessment workflow. An AI agent calls a single tool, and within seconds it has a quantified risk score, a structured advisory, and a list of specific signals explaining what drove the score — ready to feed into a travel approval workflow, a briefing document, or a duty-of-care compliance record.

  • Scheduling — run recurring destination monitoring on daily or weekly intervals to detect risk changes before travel dates
  • API access — trigger risk assessments programmatically from Python, JavaScript, or any HTTP client
  • Standby mode — server is always warm on the Apify platform with no cold-start latency for agent workflows
  • Spending limits — set a per-run budget cap so agentic workflows cannot run unbounded costs
  • Integrations — connect to Zapier, Make, webhooks, or push results to Google Sheets or travel management systems

Features

  • 8 parallel data sources — NOAA, GDACS, WHO GHO, UK Police, Interpol, REST Countries, Weather Forecast, and Nominatim queried simultaneously using Promise.allSettled for fault tolerance
  • Four independent scoring models — natural hazard (max 30 points), health risk (max 25 points), security risk (max 30 points), and weather severity (max 15 points) each produce an independent score with explanatory signals
  • Severity-weighted NOAA scoring — extreme alerts contribute 5 points, severe 2 points, moderate 1 point per alert; natural hazard score capped at 30
  • GDACS severity tiers — red alerts score 5 points, orange 3 points; integrated into the hazard dimension alongside NOAA data
  • WHO health indicator parsing — checks life expectancy thresholds (below 60 = critical flag, +5 points; below 70 = +2 points), malaria presence, tuberculosis rates above 100 per 100K, HIV prevalence above 1%, and sanitation and drinking water access below 50%
  • Crime density scoring — UK Police records multiplied 2x per record up to a ceiling of 40 points; Interpol notices multiplied 5x up to 30 points
  • Regional security overlays — REST Countries subregion data applies baseline security penalties: Middle East +3, Central/Eastern Africa +4, Southern/Southeast Asia +2
  • Composite briefing with equal 25/25/25/25 weightinggenerate_travel_briefing blends all four models for the final composite score
  • DO_NOT_TRAVEL hard override — composite score above 75 OR an EMERGENCY alert level automatically escalates to DO_NOT_TRAVEL regardless of individual dimension results
  • RECONSIDER_TRAVEL hard override — EXTREME security risk level escalates the advisory to RECONSIDER_TRAVEL at minimum
  • Multi-stop itinerary scoring — up to 5 destinations assessed with highest-risk leg identification for trip planning
  • Side-by-side destination comparisoncompare_destination_alternatives runs both destinations in parallel and returns a saferChoice field
  • Travel window planning — 14-day forecast plus active NOAA alert count with geocoded coordinates for map integration
  • No-data penalty — if WHO returns no records for a country, the health score automatically adds 15 points to represent unquantifiable uncertainty
  • Structured signal lists — every score includes human-readable signals explaining what drove it (e.g., "4 GDACS disaster alerts active", "Life expectancy: 58 years — critical health environment")
  • Budget-aware tool execution — each tool checks Actor.charge before executing and returns a clean error message if the spending limit has been reached

Use cases for travel risk intelligence

Corporate duty-of-care compliance

Corporate travel managers at companies with ISO 31030 duty-of-care obligations need documented, consistent risk assessments for every international trip. This MCP integrates into travel approval workflows to generate a pre-travel briefing with a quantified advisory level. The structured JSON output can be logged to compliance systems or fed into approval gate logic to require sign-off above a defined score threshold.

Executive protection planning

Security teams protecting C-suite executives need to assess multi-stop itineraries holistically, not just individual destinations. The score_multi_stop_itinerary tool evaluates each leg independently and surfaces the highest-risk stop. Security teams can then decide whether to investigate further with generate_travel_briefing or compare alternative routings with compare_destination_alternatives.

Travel insurance and InsurTech dynamic pricing

Insurance underwriters and InsurTech platforms can use real-time destination risk scores to inform premium calculations at point-of-sale. A trip to a destination with an active GDACS red alert or a health score above 40 warrants different pricing than the same destination assessed in a calm period. The pay-per-query model fits naturally into underwriting APIs where pricing happens on demand.

International event and conference planning

Event planners selecting venues for international conferences or offsites can compare multiple candidate cities with a single API call. The comparison tool returns a side-by-side risk breakdown so decisions are documented and defensible, not intuitive. The signals array provides audit-ready evidence of the factors considered.

Real-time employee location monitoring

Travel operations teams can integrate check_active_alerts into duty-of-care dashboards that monitor locations where employees are currently deployed. NOAA and GDACS data refresh on each call, providing near-real-time hazard awareness without requiring manual monitoring of multiple government feeds. At $0.045 per call, monitoring 20 employee locations daily costs $0.90.

AI travel assistant and concierge agents

LLM-powered travel assistants can call generate_travel_briefing to proactively brief users before a trip, surface relevant health precautions, and recommend appropriate insurance coverage based on the risk level — all within the same conversation. The structured JSON output is designed to be parseable by language models.

How to use Travel Risk Intelligence MCP Server

  1. Connect the MCP server — Add the server URL to your MCP client configuration (Claude Desktop, Cursor, Windsurf, Cline, or any MCP-compatible client). The URL is https://travel-risk-intelligence-mcp.apify.actor/mcp. Use your Apify API token as a Bearer authorization header.
  2. Choose your tool — For a full pre-travel briefing, use generate_travel_briefing. For a quick alert check, use check_active_alerts. For a multi-city trip, use score_multi_stop_itinerary. For comparing two destination options, use compare_destination_alternatives.
  3. Provide the destination — Enter a city name, country name, or region (e.g., "Nairobi", "Kenya", "Southeast Asia"). For generate_travel_briefing, also pass a country parameter to improve WHO and Interpol lookup accuracy.
  4. Receive structured results — The tool returns a JSON object with the risk score, advisory level, dimension breakdown, active alerts, and a signals list explaining the score. Most calls complete in 15-60 seconds depending on the number of data sources queried.

MCP tools

ToolPriceDescription
assess_destination_risk$0.045Weather, disaster, country profile — Destination Risk Score (0-100) across 5 sources
check_active_alerts$0.045Real-time NOAA weather alerts and GDACS disaster alerts for a location
analyze_health_risks$0.045WHO health indicators, disease prevalence, sanitation, inequality assessment
evaluate_security_risk$0.045Crime density, Interpol red notices, regional security overlay
plan_travel_window$0.04514-day weather forecast, active alert count, geocoded destination coordinates
score_multi_stop_itinerary$0.045Risk score per leg, highest-risk stop identified (up to 5 destinations)
compare_destination_alternatives$0.045Side-by-side risk comparison, safer destination identified
generate_travel_briefing$0.045Full composite briefing — all 8 sources, 4 scoring models, SAFE to DO_NOT_TRAVEL

Tool parameters

ToolParameterTypeRequiredDescription
assess_destination_riskdestinationstringYesCity, country, or region name
assess_destination_riskcountrystringNoCountry name or ISO code (improves REST Countries lookup)
check_active_alertslocationstringYesLocation to query for active NOAA and GDACS alerts
analyze_health_riskscountrystringYesCountry name or ISO code for WHO GHO and REST Countries lookup
evaluate_security_risklocationstringYesCity, region, or country name
evaluate_security_riskcountrystringNoCountry ISO code for Interpol query
plan_travel_windowdestinationstringYesTravel destination for forecast and alert retrieval
score_multi_stop_itinerarystopsstringYesComma-separated destinations, e.g. "London, Istanbul, Nairobi"
compare_destination_alternativesdestination_astringYesFirst destination for comparison
compare_destination_alternativesdestination_bstringYesSecond destination for comparison
generate_travel_briefingdestinationstringYesPrimary travel destination
generate_travel_briefingcountrystringNoCountry name or ISO code for health and security lookups

Input tips

  • Provide both destination and country for the briefing tool. Supplying a separate country parameter to generate_travel_briefing significantly improves WHO GHO and Interpol lookups, which query by country name or ISO code rather than city name.
  • Use check_active_alerts for high-frequency monitoring. It queries only 2 sources (vs. 8 for the full briefing), making it the right tool for monitoring employees currently in the field at $0.045 per call.
  • Use ISO country codes for WHO queries. Passing "KE" instead of "Kenya" or "DE" instead of "Germany" produces more consistent WHO GHO results and avoids the 15-point no-data penalty.
  • Keep multi-stop lists to 4-5 destinations. Stops are processed sequentially; 5 destinations can take 60-150 seconds. For larger itineraries, split across two calls.
  • Set a spending limit on agentic workflows. If an AI agent calls this MCP autonomously, configure maxTotalChargeLimitUsd on the actor run so the MCP's built-in spending check will exit cleanly if reached.

How to connect this MCP server

Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "travel-risk": {
      "url": "https://travel-risk-intelligence-mcp.apify.actor/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}

Cursor / Windsurf / Cline

Add the MCP server in your IDE's MCP settings panel:

URL: https://travel-risk-intelligence-mcp.apify.actor/mcp
Auth: Bearer YOUR_APIFY_TOKEN

Python

import httpx
import json

response = httpx.post(
    "https://travel-risk-intelligence-mcp.apify.actor/mcp",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
    },
    json={
        "jsonrpc": "2.0",
        "method": "tools/call",
        "params": {
            "name": "generate_travel_briefing",
            "arguments": {
                "destination": "Nairobi",
                "country": "Kenya"
            }
        },
        "id": 1
    },
    timeout=90
)

result = response.json()
briefing = json.loads(result["result"]["content"][0]["text"])
print(f"Advisory: {briefing['advisory']} (composite score: {briefing['compositeScore']})")
for signal in briefing["allSignals"]:
    print(f"  - {signal}")
for rec in briefing["recommendations"]:
    print(f"  > {rec}")

JavaScript

const response = await fetch("https://travel-risk-intelligence-mcp.apify.actor/mcp", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_APIFY_TOKEN"
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    method: "tools/call",
    params: {
      name: "generate_travel_briefing",
      arguments: { destination: "Nairobi", country: "Kenya" }
    },
    id: 1
  })
});

const result = await response.json();
const briefing = JSON.parse(result.result.content[0].text);
console.log(`Advisory: ${briefing.advisory} — Composite score: ${briefing.compositeScore}`);
briefing.recommendations.forEach(r => console.log(`  > ${r}`));

cURL

# Full travel briefing for a destination (all 8 sources, all 4 models)
curl -X POST "https://travel-risk-intelligence-mcp.apify.actor/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "generate_travel_briefing",
      "arguments": { "destination": "Karachi", "country": "Pakistan" }
    },
    "id": 1
  }'

# Quick active alerts check only (2 sources, faster, cheaper)
curl -X POST "https://travel-risk-intelligence-mcp.apify.actor/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization": "Bearer YOUR_APIFY_TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "check_active_alerts",
      "arguments": { "location": "Miami" }
    },
    "id": 2
  }'

Output example

Below is a representative output from generate_travel_briefing for a destination with elevated risk across multiple dimensions.

{
  "destination": "Nairobi",
  "compositeScore": 54,
  "advisory": "RECONSIDER_TRAVEL",
  "destinationRisk": {
    "score": 61,
    "hazardScore": 6,
    "healthScore": 20,
    "securityScore": 27,
    "riskLevel": "HIGH",
    "signals": [
      "28 crime records — high crime density",
      "Significant health risks: low life expectancy or high disease burden"
    ]
  },
  "activeAlerts": {
    "score": 15,
    "weatherAlerts": 2,
    "disasterAlerts": 1,
    "totalAlerts": 3,
    "alertLevel": "ADVISORY",
    "signals": [
      "2 NOAA weather alert(s) active",
      "1 GDACS disaster alert(s) active"
    ]
  },
  "healthRisk": {
    "score": 52,
    "indicators": 12,
    "criticalFlags": 9,
    "riskLevel": "ELEVATED",
    "signals": [
      "Malaria risk present",
      "Life expectancy: 64 years",
      "High inequality (Gini: 48.5) — uneven healthcare access"
    ]
  },
  "securityRisk": {
    "score": 44,
    "crimeRecords": 22,
    "interpolNotices": 2,
    "riskLevel": "ELEVATED",
    "signals": [
      "22 crime records — high crime density",
      "Eastern Africa subregion flag applied"
    ]
  },
  "allSignals": [
    "28 crime records — high crime density",
    "Significant health risks: low life expectancy or high disease burden",
    "2 NOAA weather alert(s) active",
    "1 GDACS disaster alert(s) active",
    "Malaria risk present",
    "High inequality (Gini: 48.5) — uneven healthcare access",
    "22 crime records — high crime density"
  ],
  "recommendations": [
    "Monitor active alerts and have evacuation plan",
    "Consult travel medicine clinic, ensure vaccinations up to date",
    "Register with embassy, avoid high-crime areas, maintain situational awareness",
    "Carry medical kit, verify hospital locations, consider medical evacuation insurance"
  ]
}

Output fields

FieldTypeDescription
destinationstringDestination name passed to the tool
compositeScorenumberComposite risk score 0-100 (25% each from 4 models)
advisorystringSAFE / EXERCISE_CAUTION / RECONSIDER_TRAVEL / DO_NOT_TRAVEL
destinationRisk.scorenumberDestination risk sub-score (0-100)
destinationRisk.hazardScorenumberNatural hazard component (0-30) from NOAA + GDACS alerts
destinationRisk.healthScorenumberHealth component (0-25) from WHO indicators
destinationRisk.securityScorenumberSecurity component (0-30) from crime + Interpol + region
destinationRisk.riskLevelstringLOW / MODERATE / ELEVATED / HIGH / EXTREME
destinationRisk.signalsstring[]Human-readable factors driving the destination risk score
activeAlerts.scorenumberAlert severity score (0-100)
activeAlerts.weatherAlertsnumberCount of active NOAA weather alerts
activeAlerts.disasterAlertsnumberCount of active GDACS disaster alerts
activeAlerts.totalAlertsnumberCombined weather + disaster alert count
activeAlerts.alertLevelstringNONE / ADVISORY / WATCH / WARNING / EMERGENCY
activeAlerts.signalsstring[]Alert-specific signals (e.g., "3 NOAA weather alert(s) active")
healthRisk.scorenumberHealth risk score (0-100)
healthRisk.indicatorsnumberNumber of WHO GHO indicators retrieved
healthRisk.criticalFlagsnumberWeighted count of critical health signals
healthRisk.riskLevelstringLOW / MODERATE / ELEVATED / HIGH / CRITICAL
healthRisk.signalsstring[]Specific health risks (e.g., "Malaria risk present")
securityRisk.scorenumberSecurity risk score (0-100)
securityRisk.crimeRecordsnumberCrime records returned by UK Police API
securityRisk.interpolNoticesnumberInterpol red notices returned for the region
securityRisk.riskLevelstringLOW / MODERATE / ELEVATED / HIGH / EXTREME
securityRisk.signalsstring[]Specific security signals (crime count, Interpol count, region flags)
allSignalsstring[]Union of signals from all four models
recommendationsstring[]Actionable recommendations based on score thresholds

How much does it cost to run travel risk assessments?

Travel Risk Intelligence MCP uses pay-per-event pricing — you pay $0.045 per tool call. Platform compute costs are included. You are only charged when a tool successfully executes; calls that hit a spending limit do not incur a charge.

ScenarioTool callsCost per callTotal cost
Single active alert check1$0.045$0.045
Destination risk assessment1$0.045$0.045
Full travel briefing (all 8 sources)1$0.045$0.045
Weekly monitoring — 20 locations20$0.045$0.90
Monthly corporate program — 200 assessments200$0.045$9.00

You can set a maximum spending limit per run to control costs. The MCP checks the budget before each tool execution and returns a clean error message if the limit has been reached — no partial charges.

Apify's free tier includes $5 of monthly platform credits, covering approximately 111 tool calls. Compare this to International SOS subscriptions at $50-200 per user per year — this MCP provides automated first-pass risk screening at a fraction of the cost, with no subscription commitment.

How Travel Risk Intelligence MCP works

Phase 1: parallel data collection

When a tool is called, the server dispatches up to 8 sub-actor calls simultaneously using Promise.allSettled. Each sub-actor is a separate Apify actor with its own API integration:

  • NOAA Weather Alerts (actor BJTV7I8rfiNHa0PlD) — returns active NWS alerts filtered by location with severity, urgency, and message fields
  • Weather Forecast Search (actor TpfQHy4R1EZT3ZqOp) — returns a multi-day forecast with temperature and wind speed data
  • GDACS Disaster Alerts (actor pmweI2ngI1bo4l6KD) — returns active disaster events with alertlevel values of red, orange, or green
  • WHO GHO Search (actor jgahofLKxi6FAycgA) — returns health indicators for the queried country including IndicatorCode and NumericValue
  • UK Police Crime Data (actor jiVktGAOz5rv108S2) — returns crime records for the queried area
  • Interpol Red Notices (actor A5qfeUw5yBCtcdhn4) — returns internationally wanted persons linked to the region
  • REST Countries (actor 6GUYnSUCFTRuVcQDA) — returns country profile including region, subregion, borders array, population, and Gini coefficient object
  • Nominatim Geocoder (actor i4BCLB2eHbePe78aj) — resolves the destination string to lat and lon coordinates

Promise.allSettled ensures a failure in any single data source does not abort the assessment. Failed sources return empty arrays and each scoring model handles missing data gracefully, including a 15-point uncertainty penalty for missing WHO records.

Phase 2: four independent scoring models

scoreDestinationRisk applies severity-weighted point accumulation to NOAA alerts (extreme +5, severe +2, moderate +1, capped at 30), GDACS alerts (red/orange +5, other +2, integrated into the same 30-point hazard ceiling), WHO health indicators (life expectancy thresholds, disease burden flags), and REST Countries regional overlays. The four dimension scores — hazard (max 30), health (max 25), security (max 30), weather (max 15) — sum to a maximum of 100.

checkActiveAlerts focuses exclusively on real-time emergency signals: NOAA severity accumulation (extreme +3, severe +2, other +1 per alert, max 50) and GDACS severity accumulation (red +5, orange +3, other +1 per alert, max 50). The five-tier alert level maps to score thresholds at 20 (ADVISORY), 40 (WATCH), 60 (WARNING), and 80 (EMERGENCY).

analyzeHealthRisks parses WHO indicator codes for life expectancy below 60 (+5 critical points) or below 70 (+2 points), malaria presence (+2), tuberculosis rates above 100 per 100K (+2), HIV prevalence above 1% (+2), sanitation access below 50% (+3), and safe drinking water access below 50% (+3). The Gini coefficient from REST Countries adds a healthcare access inequality signal when above 45. A 15-point baseline penalty applies if WHO returns no data at all.

evaluateSecurityRisk scores crime volume (records × 2, max 40), Interpol notice density (notices × 5, max 30), and a country-level security overlay derived from REST Countries subregion: Middle East +3, Central Africa +4, Eastern Africa +4, Southern Asia +2, Southeast Asia +2, many-border countries (6+ borders) +3.

Phase 3: composite advisory generation

generateTravelBriefing blends the four model scores with equal 25% weights to produce a composite score from 0-100. Advisory classification: 0-24 = SAFE, 25-49 = EXERCISE_CAUTION, 50-74 = RECONSIDER_TRAVEL, 75+ = DO_NOT_TRAVEL. Two hard overrides apply: an EMERGENCY alert level forces DO_NOT_TRAVEL regardless of composite score; an EXTREME security risk level forces RECONSIDER_TRAVEL at minimum. All signals from all four models are merged into allSignals, and five threshold-based recommendation rules generate actionable guidance for alerts, health, security, natural hazard, and medical evacuation coverage.

Tips for best results

  1. Read the signals array, not just the score. A composite score of 45 driven by "Malaria risk present" requires different action than the same score driven by "14 active weather alerts." Signals are suitable for compliance documentation and direct traveler briefings.

  2. Use compare_destination_alternatives before booking. Both destinations are evaluated in parallel, so the cost is identical to a single assessment. The saferChoice field provides a clean decision signal for automated booking approval logic.

  3. Combine assess_destination_risk with plan_travel_window for time-sensitive trips. If the risk score is ELEVATED or higher, call plan_travel_window to determine whether the risk is temporary (an active weather event) or structural (endemic health burden, regional security flags).

  4. Focus on the highest-risk leg for multi-stop trips. The score_multi_stop_itinerary response includes a highestRisk field identifying the most concerning stop. Use this to decide whether to call generate_travel_briefing for that specific destination.

  5. Set a spending limit for agentic workflows. Configure maxTotalChargeLimitUsd on the actor run so the MCP's built-in spending check exits cleanly if reached — no partial charges.

  6. Use ISO country codes for precision. A two-letter ISO code produces more consistent WHO GHO results and avoids triggering the 15-point no-data penalty for OECD countries with genuine low health risk.

  7. Schedule check_active_alerts for field monitoring. At $0.045 per call, monitoring 20 employee locations daily costs $0.90/day. Use a scheduled run with a webhook to notify Slack or email when a score exceeds your threshold.

Combine with other Apify actors

ActorHow to combine
Location Risk ReportAssess physical infrastructure and facility risk at the destination — pairs with travel risk for site-based travel programs
NOAA Weather AlertsRun standalone NOAA queries to retrieve raw alert data without the scoring layer, for custom risk model development
GDACS Disaster AlertsQuery GDACS directly for raw disaster event data with full impact estimates and population exposure figures
WHO GHO SearchPull raw WHO health indicator data for countries on a travel program's destination shortlist
Interpol Red NoticesRun targeted Interpol queries for executive protection due diligence beyond travel risk scoring
Company Deep ResearchResearch a destination's political and economic environment to complement quantitative risk scores with qualitative country context
AML Entity ScreeningScreen individuals or entities associated with a destination for sanctions and financial crime exposure

Limitations

  • Crime data is UK-focused. The UK Police Crime Data source covers England, Wales, and parts of Scotland. For non-UK destinations, the crime dimension relies primarily on Interpol notices and regional security overlays — this may understate crime risk in high-crime cities outside the UK.
  • WHO health data has variable country coverage. WHO GHO data is most comprehensive for developing nations with ongoing disease burdens. For OECD countries, health data may be sparse, triggering the 15-point no-data penalty even when health risks are genuinely low. Check the signals array to determine whether an elevated health score reflects real risk or data absence.
  • NOAA alerts are US-centric. NOAA's National Weather Service primarily covers US territories and nearby oceanic areas. For destinations outside North America, the weather alert dimension relies on GDACS data and weather forecast temperature/wind thresholds rather than NWS advisories.
  • No political instability or sanctions data. The MCP does not query OFAC sanctions lists, State Department travel advisories, political risk indices, or armed conflict databases. Security risk is derived from crime records and Interpol notices — it does not capture active armed conflict, civil unrest, or coup risk directly.
  • Multi-stop scoring is sequential, not parallel. The score_multi_stop_itinerary tool processes each destination in a loop rather than simultaneously. For 5 stops, expect 60-150 seconds.
  • No historical trend data. All data is current-state. The MCP cannot assess whether a destination is becoming safer or more dangerous over time — it reflects conditions at the moment of the query.
  • No medical facility data. The health risk score reflects disease burden and infrastructure quality at country level, but does not include hospital locations, ICU capacity, blood bank availability, or medical evacuation routes.
  • Scores are relative to data availability, not absolute. A score of 40 for a European capital during a heat wave is not equivalent to a score of 40 for a city with endemic malaria. Always read the signals array alongside the numeric score.

Integrations

  • Apify API — call the MCP endpoint directly from any HTTP client to integrate travel risk scoring into corporate travel management systems or underwriting APIs
  • Webhooks — trigger Slack or email notifications when a scheduled destination monitoring run returns a score above a defined threshold
  • Zapier — connect to travel booking platforms or HR systems to trigger risk assessments automatically when new trips are approved
  • Make — build automated duty-of-care workflows that assess, log, and notify managers when employees book travel to elevated-risk destinations
  • Google Sheets — log destination risk scores to a spreadsheet for travel program reporting and compliance audit trails
  • LangChain / LlamaIndex — integrate as a tool in an LLM agent pipeline for travel assistant or security briefing applications that need real-time safety context

Troubleshooting

Assessment returns a high health score for a clearly safe country. This is typically the no-data penalty — if WHO GHO has no records for the queried country name, the health model adds 15 points by default. Try passing a two-letter ISO country code in the country parameter (e.g., "DE" instead of "Germany"). If the signals array contains "No WHO health data available — unable to assess health risks", the elevated score reflects data absence, not actual health risk.

Multi-stop itinerary times out or returns partial results. Each stop queries 3 data sources, so a 5-stop itinerary can take 90-150 seconds. If you hit the 120-second actor timeout in a sub-call, reduce to 3-4 stops per call, or split the itinerary across multiple API calls and combine results client-side.

Security scores seem high for a low-crime destination. The regional security overlay applies a baseline penalty for specific subregions (Middle East, Central Africa, Eastern Africa) derived from REST Countries data. If the destination is in one of these regions but has a genuine low crime rate, the crimeRecords: 0 value in the securityRisk object clarifies that the score is driven by the regional flag, not actual observed crime data.

Tool returns "Spending limit reached" error. Your Apify actor run has a maxTotalChargeLimitUsd that has been reached. Increase the limit in Apify Console under the actor's run settings, or start a new run with a higher budget. No charge is incurred for the blocked call.

generate_travel_briefing returns different scores than assess_destination_risk for the same destination. This is expected behavior. generate_travel_briefing queries all 8 data sources and applies all 4 scoring models with equal weighting. assess_destination_risk queries 5 sources and applies only scoreDestinationRisk. The briefing tool is the more comprehensive and authoritative assessment.

Responsible use

  • All data sources used by this MCP server are publicly available government and international organization databases (NOAA, GDACS, WHO, Interpol, UK Police, REST Countries, Nominatim/OpenStreetMap).
  • Risk scores are automated assessments derived from public data and should be used as a first-pass screening tool, not as the sole basis for safety decisions in high-stakes situations.
  • For genuine travel emergencies or high-risk missions, consult qualified security professionals and official government travel advisories in addition to automated scoring.
  • For guidance on web scraping legality, see Apify's guide.

FAQ

How does travel risk intelligence scoring work for a destination? The server queries up to 8 data sources in parallel, then applies four independent scoring models: natural hazard (max 30 points from NOAA and GDACS alerts weighted by severity), health risk (max 25 points from WHO life expectancy, disease indicators, and infrastructure), security risk (max 30 points from crime density, Interpol notices, and regional flags), and weather severity (max 15 points from temperature and wind thresholds). These sum to the Destination Risk Score (0-100). The composite briefing blends all four models with equal 25% weighting.

How accurate is the destination risk score? The score reflects publicly available data at the time of the query. NOAA alerts are near-real-time; GDACS updates within hours of a major event; WHO and REST Countries data are updated periodically. The score is more current than most static travel advisory systems, but rapidly evolving situations — a coup, a sudden outbreak — may not appear in structured data feeds immediately. Always check official government advisories for situations in active flux.

How many destinations can I assess in a multi-stop itinerary? Up to 5 destinations per score_multi_stop_itinerary call. Destinations are processed sequentially. For itineraries with more than 5 stops, split them into two calls and combine the results client-side.

Does travel risk intelligence cover real-time crises like earthquakes or hurricanes? Yes. GDACS disaster alerts are updated within hours of major natural disaster events, and NOAA weather alerts are near-real-time. Both feed directly into the hazard and alert scoring dimensions. An active hurricane warning over a destination will push the advisory toward WARNING or EMERGENCY alert level.

How does this compare to International SOS or Control Risks? International SOS and Control Risks provide human analyst networks, 24/7 emergency response lines, and medical evacuation services — capabilities this MCP does not replicate. This MCP provides automated, quantified risk screening from public data at a fraction of the cost ($0.045 per query vs. $50-200+ per user per year for subscription services). Use both: this MCP for scalable first-pass screening, and human advisory services for high-risk missions or live emergencies.

Is it legal to use this travel risk data? Yes. All data sources are publicly available databases operated by government agencies and international organizations: NOAA (US government), GDACS (EU Joint Research Centre), WHO GHO (United Nations), Interpol (international law enforcement), UK Police (UK Home Office), REST Countries (open data), and Nominatim (OpenStreetMap). No terms of service are violated by querying these APIs. See Apify's guide on web scraping legality.

Can I schedule automated destination monitoring for employees in the field? Yes. Configure a scheduled Apify actor run that calls check_active_alerts for each employee location on a daily or hourly basis. Use webhooks to notify a Slack channel or email distribution list when a score exceeds a defined threshold. This creates a lightweight duty-of-care monitoring system without manual intervention.

What happens if a data source is unavailable? The server uses Promise.allSettled, which means a failure in any single data source does not abort the assessment. The failed source returns an empty array, and the scoring model handles missing data gracefully. The signals array will include "No WHO health data available — unable to assess health risks" if the WHO query fails, making the data gap transparent in the output.

Can I use this MCP in Claude, GPT, or other AI agent workflows? Yes. This MCP follows the Model Context Protocol standard and works with any compliant client: Claude Desktop, Cursor, Windsurf, Cline, and any LLM framework that supports MCP tool calling. The structured JSON output is designed to be parseable by language models, with concise signal strings suitable for inclusion in agent responses.

How long does a typical travel risk assessment take? check_active_alerts (2 sources) typically completes in 10-20 seconds. assess_destination_risk (5 sources) takes 15-35 seconds. generate_travel_briefing (8 sources, 4 models) takes 20-60 seconds depending on data source response times. score_multi_stop_itinerary with 5 stops can take 60-150 seconds.

What advisory level triggers a DO_NOT_TRAVEL classification? A composite risk score of 75 or above, or an EMERGENCY alert level from checkActiveAlerts (score of 80 or above based on active NOAA and GDACS severity), triggers DO_NOT_TRAVEL regardless of the other dimensions. An EXTREME security risk level (score of 80 or above on the security model) triggers RECONSIDER_TRAVEL at minimum, regardless of the composite score.

Can travel risk scoring integrate with travel management systems like SAP Concur or Egencia? Not via a native connector. Use the Apify API or webhooks to build a custom integration layer that calls the MCP when a trip is created in your travel management system and logs the risk assessment result against the booking record.

Help us improve

If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:

  1. Go to Account Settings > Privacy
  2. Enable Share runs with public Actor creators

This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.

Support

Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try Travel Risk Intelligence MCP Server?

Start for free on Apify. No credit card required.

Open on Apify Store