Adversarial Geopolitical Equilibrium MCP Server
Adversarial geopolitical equilibrium analysis for AI agents via the Model Context Protocol. This MCP server gives Claude, Cursor, Windsurf, and any MCP-compatible AI client access to 8 quantitative game-theoretic tools covering sanctions cascades, escalation trajectories, alliance stability, and strategic misperception across 20 pre-calibrated state actors.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| compute-interlocking-equilibria | Bayesian extensive-form game sequential equilibrium | $0.12 |
| simulate-geopolitical-agents | Level-k replicator dynamics with Red Queen cycles | $0.10 |
| analyze-sanctions-cascade | Sanctions hypergraph propagation cascade | $0.10 |
| assess-escalation-dynamics | Hamilton-Jacobi-Isaacs viscosity solution | $0.12 |
| design-alliance-mechanism | VCG mechanism with Shapley payments | $0.10 |
| detect-strategic-misperception | Hypergame belief hierarchy analysis | $0.08 |
| evaluate-cyber-kinetic-blotto | Colonel Blotto SDP moment relaxation | $0.10 |
| forecast-regime-transitions | Crawford-Sobel cheap talk equilibrium | $0.08 |
Example: 100 events = $12.00 · 1,000 events = $120.00
Connect to your AI agent
Add this MCP server to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.
https://ryanclinton--adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp{
"mcpServers": {
"adversarial-geopolitical-equilibrium-mcp": {
"url": "https://ryanclinton--adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp"
}
}
}Documentation
Adversarial geopolitical equilibrium analysis for AI agents via the Model Context Protocol. This MCP server gives Claude, Cursor, Windsurf, and any MCP-compatible AI client access to 8 quantitative game-theoretic tools covering sanctions cascades, escalation trajectories, alliance stability, and strategic misperception across 20 pre-calibrated state actors.
Each tool pulls live data from 16 Apify actors at query time — OFAC, OpenSanctions, UN COMTRADE, IMF, World Bank, Finnhub, Congress, GDACS, and more — then applies advanced mathematical frameworks including Bayesian extensive-form sequential equilibrium, Hamilton-Jacobi-Isaacs differential games, and Colonel Blotto resource allocation to produce structured quantitative output. The result is rigorous geopolitical intelligence grounded in real-time data, not static heuristics.
What data can you access?
| Data Point | Source | Coverage |
|---|---|---|
| 📋 US Treasury SDN sanctions status | OFAC Sanctions Search | Full SDN list, all programs |
| 🌐 International sanctions and watchlists | OpenSanctions Search | 100+ global programs, PEP lists |
| 🚨 International law enforcement notices | Interpol Red Notices | Global fugitives and wanted persons |
| 🔎 US federal wanted persons | FBI Most Wanted Search | Active federal cases |
| 🏛️ US legislation (sanctions, defense bills) | Congress Bill Search | All active and historical bills |
| 📜 Executive orders, regulatory actions | Federal Register Search | Federal rules and agency notices |
| 🔄 Bilateral trade volumes | UN COMTRADE | Global commodity and goods flows |
| 📊 Governance and stability indicators | World Bank Data | 200+ countries, multi-decade series |
| 💹 Macroeconomic indicators | IMF Economic Data | GDP, inflation, debt, current account |
| 📈 Market reaction to geopolitical events | Finnhub Stock Data | Global equities, ETFs |
| 🏦 Congressional stock trades | Congressional Stock Tracker | Insider knowledge signals |
| ⚡ Natural disaster impact on stability | GDACS Disaster Alerts | Worldwide real-time events |
| 🛡️ Cyber vulnerabilities and CVEs | NVD CVE Search | Full NIST vulnerability database |
| 🌍 Country reference and baseline data | REST Countries | 250 countries, alliance memberships |
| 📖 Background intelligence | Wikipedia Search | General entity knowledge |
| 📡 Social OSINT signals | Bluesky Social Search | Open social intelligence |
Why use this MCP server for geopolitical analysis?
Manual geopolitical analysis at this level of mathematical rigor requires a team of analysts, weeks of data collection, and expensive subscriptions to Bloomberg, Jane's, or Oxford Analytica. A single scenario — sanctions cascade analysis for one target country — means pulling bilateral trade data, cross-referencing live sanctions registries, modeling threshold effects through a trade network, and computing GDP impact. Done by hand: 2-3 days minimum.
This server automates the entire pipeline from raw data collection through mathematical modeling to structured output in a single tool call. Your AI agent gets quantitative geopolitical intelligence — not narrative summaries — with citations to live data sources.
- Scheduling — Run recurring scenario analyses daily or weekly to track evolving situations like active conflict zones
- API access — Trigger analyses from Python, JavaScript, or any HTTP client using the standard MCP protocol
- Proxy rotation — All 16 underlying data actors use Apify's built-in proxy infrastructure for reliable data collection at scale
- Monitoring — Get Slack or email alerts when runs fail or produce unexpected results via Apify webhooks
- Integrations — Connect to Zapier, Make, Google Sheets, or forward results to your own intelligence platforms via webhooks
Features
- 8 quantitative game-theoretic frameworks — Sequential equilibrium, hypergame theory, sanctions hypergraph propagation, VCG mechanism design, Hamilton-Jacobi-Isaacs differential games, Colonel Blotto, replicator dynamics, and Crawford-Sobel cheap talk, all implemented in TypeScript
- Bayesian extensive-form sequential equilibrium — Computes simultaneous Perfect Bayesian Equilibria across up to 5 geopolitical arenas (trade, military, cyber, diplomatic, economic) with Quantal Response Equilibrium guaranteeing existence; temperature parameter controls rationality level
- Cross-arena linkage detection — Automatically classifies arena interactions as strategic complements (escalation reinforces escalation), strategic substitutes (escalation in one reduces incentive in the other), or independent
- Sanctions cascade on trade-weighted hypergraphs — Models directed weighted hyperedges representing coordinated alliance sanctions; threshold model with resilience computed from GDP, trade openness, and internal stability; GDP impact estimated at 15% per unit of sanctions severity
- Hamilton-Jacobi-Isaacs escalation dynamics — Continuous-time stochastic differential game with viscosity solution on a discretized state grid, Euler-Maruyama forward simulation, and state vector covering escalation level, military postures, crisis intensity, and nuclear risk
- VCG alliance mechanism design — Shapley value fair allocation, core stability testing, superadditivity and convexity checks, VCG payments for externality pricing; incentive-compatible truth-telling guaranteed as dominant strategy
- Hypergame theory with belief hierarchies — Bennett 1977 framework with epsilon-approximate common knowledge truncation; quantifies misperception gaps between players, identifies exploitable perceptual vulnerabilities, and generates correction recommendations
- Colonel Blotto across 5 domains — Cyber, conventional, nuclear, economic, and information domains; SDP moment relaxation with iterative best response; Tullock contest function for win probabilities; domain-specific capability multipliers
- Replicator dynamics with level-k reasoning — Evolutionary dynamics reveal dominant strategies and evolutionary stable strategies; Red Queen cycling detection for arms race identification
- Crawford-Sobel cheap talk equilibrium — Partition bound quantifies information transmission effectiveness; evolutionary stability refinement for credible signaling analysis
- 16 live data sources orchestrated in parallel — Each tool call fires 4-7 actor runs in parallel with 180-second timeouts; data is fetched fresh at query time, not cached
- 20 pre-calibrated state actors — US, CN, RU, GB, FR, DE, JP, IN, KR, AU, IL, IR, SA, TR, BR, KP, UA, TW, PK, PL; each with GDP, military spending, nuclear capability, cyber capability score, internal stability, trade openness, region, and alliance memberships (NATO, SCO, BRICS, QUAD, AUKUS, FVEY, CSTO, EU, OPEC)
- Seeded deterministic PRNG — Mulberry32 seeded PRNG ensures reproducible stochastic results for the same input configuration
- Standby mode — Server stays warm between calls using Apify's standby mode, eliminating cold start delays for interactive workflows
Use cases for geopolitical equilibrium analysis
Defense and intelligence research
Think tanks, defense research organizations, and academic analysts need quantitative outputs for published work. This server produces citable mathematical results — Nash deviation scores, Shapley values, HJI saddle points — grounded in live public data, suitable for briefings and reports that demand more rigor than narrative forecasting.
Sanctions policy assessment
Trade lawyers and compliance teams need to assess secondary sanctions exposure before clients act. Running analyze_sanctions_cascade on a target country with 10-15 trade partners identifies cascade rounds, GDP impact, and tipping points — the analysis that determines whether a client in Turkey or India faces secondary risk.
Crisis scenario wargaming
National security teams and corporate geopolitical risk functions model Taiwan Strait escalation, Iran nuclear breakout, and North Korea provocation scenarios. The assess_escalation_dynamics tool produces time-indexed escalation trajectories with nuclear risk peaks and deescalation timelines, giving wargame moderators quantitative anchors.
Alliance viability analysis
Diplomatic advisors evaluating QUAD expansion, NATO enlargement, or new economic coalitions use design_alliance_mechanism to test superadditivity and core stability before political commitment. Shapley values expose fair burden-sharing and identify marginally stable members.
AI agent geopolitical reasoning
LLM agents working on geopolitical research benefit from structured quantitative tools rather than relying solely on parametric knowledge. An agent calls compute_interlocking_equilibria for current equilibrium strategies grounded in live data, then detect_strategic_misperception to understand why actors might miscalculate.
Competitive intelligence and country risk
Investment managers and sovereign debt analysts use forecast_regime_transitions to get IMF and World Bank-calibrated transition probability scores with identified risk factors — quantitative country risk without a Bloomberg subscription.
How to connect this MCP server to your AI client
- Get your Apify API token — Sign up at apify.com (free plan includes $5/month in credits) and copy your token from Account Settings.
- Add the server to your client config — Paste the JSON configuration below into your Claude Desktop, Cursor, or Windsurf MCP settings file.
- Start a conversation — Open a new chat and ask your AI to analyze a geopolitical scenario. The tools are available immediately.
- Review structured output — Results arrive as formatted JSON with equilibria, trajectories, Shapley values, and data source counts directly in your AI client.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"adversarial-geopolitical-equilibrium": {
"type": "url",
"url": "https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp?token=YOUR_APIFY_TOKEN"
}
}
}
Cursor
Add to your Cursor MCP settings under Settings > MCP:
{
"mcpServers": {
"adversarial-geopolitical-equilibrium": {
"type": "url",
"url": "https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp?token=YOUR_APIFY_TOKEN"
}
}
}
Windsurf, Cline, and other MCP clients
Use the same JSON structure. Replace YOUR_APIFY_TOKEN with your token from Apify Console.
⬇️ Input parameters
The MCP server has no top-level input schema — all parameters are passed per tool call via the MCP protocol. The eight tools and their parameters are:
| Tool | Parameter | Type | Required | Default | Description |
|---|---|---|---|---|---|
compute_interlocking_equilibria | countries | string[] | No | ["US","CN","RU","GB"] | ISO codes, 2-8 countries |
compute_interlocking_equilibria | arenas | enum[] | No | all 5 arenas | One or more of: trade, military, cyber, diplomatic, economic |
compute_interlocking_equilibria | max_iterations | number | No | 300 | Equilibrium computation iterations, 50-1000 |
simulate_geopolitical_agents | countries | string[] | No | ["US","CN"] | ISO codes, 2-6 countries |
simulate_geopolitical_agents | arena | enum | No | "trade" | Single arena: trade, military, cyber, diplomatic, or economic |
analyze_sanctions_cascade | target_countries | string[] | Yes | — | Countries to directly sanction, 1-5 ISO codes |
analyze_sanctions_cascade | all_countries | string[] | No | 13-country default | Full simulation country set, 3-20 ISO codes |
analyze_sanctions_cascade | max_cascade_rounds | number | No | 10 | Maximum propagation rounds, 1-20 |
assess_escalation_dynamics | player1 | string | Yes | — | ISO code for first state actor |
assess_escalation_dynamics | player2 | string | Yes | — | ISO code for second state actor |
assess_escalation_dynamics | initial_crisis_intensity | number | No | 0.5 | Starting crisis intensity, 0.0-1.0 |
design_alliance_mechanism | countries | string[] | Yes | — | Proposed alliance members, 3-8 ISO codes |
detect_strategic_misperception | countries | string[] | Yes | — | Countries to analyze, 2-6 ISO codes |
evaluate_cyber_kinetic_blotto | player1 | string | Yes | — | First player ISO code |
evaluate_cyber_kinetic_blotto | player2 | string | Yes | — | Second player ISO code |
forecast_regime_transitions | country | string | Yes | — | Target country ISO code |
Supported ISO codes: US, CN, RU, GB, FR, DE, JP, IN, KR, AU, IL, IR, SA, TR, BR, KP, UA, TW, PK, PL
Example tool calls
Sanctions cascade — Russia with major trade partners:
{
"tool": "analyze_sanctions_cascade",
"arguments": {
"target_countries": ["RU"],
"all_countries": ["US", "CN", "RU", "GB", "DE", "JP", "IN", "TR", "KR", "AU", "BR", "SA"],
"max_cascade_rounds": 8
}
}
Taiwan Strait escalation trajectory:
{
"tool": "assess_escalation_dynamics",
"arguments": {
"player1": "US",
"player2": "CN",
"initial_crisis_intensity": 0.7
}
}
QUAD alliance stability check:
{
"tool": "design_alliance_mechanism",
"arguments": {
"countries": ["US", "JP", "IN", "AU"]
}
}
Input tips
- Include major trade partners in cascade analysis —
analyze_sanctions_cascadeworks best with 8 or more countries; include the target's top import and export partners for realistic cascade modeling - Use higher
max_iterationsfor multi-arena equilibria — Complex 4-6 country, 5-arena configurations may need 500-1000 iterations to converge; the default of 300 suits 2-4 country scenarios - Pair misperception with equilibrium tools — Run
detect_strategic_misperceptionalongsidecompute_interlocking_equilibriaon the same country set to understand the gap between equilibrium play and how actors actually perceive the situation - Start with
compute_interlocking_equilibriafor broad overview — Then drill into specific dynamics withassess_escalation_dynamicsoranalyze_sanctions_cascade assess_escalation_dynamicsis bilateral — It models a 2-player differential game; for multilateral crises, analyze the dominant dyad first, then secondary relationships separately
⬆️ Output example
Response from analyze_sanctions_cascade for target Russia, 12-country simulation:
{
"targets": [
{ "id": "RU", "name": "Russia" }
],
"cascade": {
"rounds": 3,
"directlyAffected": 1,
"totalAffected": 4,
"totalGdpImpact": "$1247B",
"tradeDisruption": "14.2%",
"affectedActors": [
{
"actorId": "TR",
"name": "Turkey",
"sanctionLevel": 0.61,
"tradeExposure": 0.48,
"financialExposure": 0.32,
"cascadeRound": 1
},
{
"actorId": "IN",
"name": "India",
"sanctionLevel": 0.44,
"tradeExposure": 0.38,
"financialExposure": 0.24,
"cascadeRound": 2
},
{
"actorId": "CN",
"name": "China",
"sanctionLevel": 0.29,
"tradeExposure": 0.52,
"financialExposure": 0.41,
"cascadeRound": 2
},
{
"actorId": "BR",
"name": "Brazil",
"sanctionLevel": 0.18,
"tradeExposure": 0.14,
"financialExposure": 0.09,
"cascadeRound": 3
}
],
"tippingPoints": [
{
"actor": "TR",
"threshold": 0.40,
"consequence": "NATO compliance pressure triggers secondary sanctions exposure"
},
{
"actor": "IN",
"threshold": 0.35,
"consequence": "US secondary sanctions warning triggers partial compliance"
}
],
"influenceMaximizationSet": ["US", "EU", "GB"],
"secondaryEffects": [
{ "actor": "TR", "effect": "energy import substitution required", "severity": 0.58 },
{ "actor": "IN", "effect": "discounted oil purchase program under pressure", "severity": 0.41 }
],
"hyperedgeCount": 8
},
"legislation": {
"relatedBills": 7,
"sanctionsAuthorities": ["CAATSA", "EO 14024", "OFAC SDN designation"]
},
"dataSources": {
"sanctionsRecords": 42,
"tradeRecords": 38,
"legislativeRecords": 7,
"interpol": 3
}
}
Output fields
| Field | Type | Description |
|---|---|---|
cascade.rounds | number | Number of propagation rounds before cascade stops |
cascade.totalGdpImpact | string | Estimated cumulative GDP impact in USD billions |
cascade.tradeDisruption | string | Percentage of simulated trade volume disrupted |
cascade.affectedActors[].sanctionLevel | number | Sanctions severity 0.0-1.0 for each affected country |
cascade.affectedActors[].tradeExposure | number | Bilateral trade exposure to sanctioned country |
cascade.affectedActors[].cascadeRound | number | Which cascade round the country was affected in |
cascade.tippingPoints[].threshold | number | Trade exposure threshold at which compliance triggers |
cascade.influenceMaximizationSet | string[] | Minimum coalition to achieve maximum cascade |
equilibria[].nashDeviation | number | Distance from Nash equilibrium; < 0.01 = converged |
equilibria[].sequentialRationality | number | Sequential rationality score 0.0-1.0 |
equilibria[].bayesConsistency | number | Bayesian consistency of beliefs 0.0-1.0 |
equilibria[].strategies[].action | string | Optimal action for player-type combination |
equilibria[].strategies[].probability | number | Mixed strategy probability |
linkages[].linkageType | enum | strategic_complement, strategic_substitute, or independent |
linkages[].strength | number | Cross-arena linkage strength 0.0-1.0 |
systemStability | number | Overall system stability score 0.0-1.0 |
trajectory[].escalationLevel | number | Escalation level at each time step (HJI output) |
trajectory[].nuclearRisk | number | Nuclear escalation risk at each time step |
peakEscalation | number | Maximum escalation level reached |
saddlePointValue | number | HJI saddle point — where deescalation forces dominate |
timeToDeescalation | number|null | Time units until stable equilibrium |
shapleyValues | Record<string, number> | Fair burden-sharing allocation by country |
isSuperadditive | boolean | Whether grand coalition is worth more than sum of parts |
isCore | boolean | Whether coalition is stable against sub-coalition defection |
perceptions[].misperceptionSeverity | number | Severity of misperception per player pair |
exploitableGaps[].advantage | number | Strategic advantage from misperception exploitation |
dominantStrategy | string | Evolutionary dominant strategy from replicator dynamics |
evolutionaryStableStrategy | string|null | ESS if one exists, null for cycling |
dataSources.* | number | Count of live records retrieved from each data source |
How much does it cost to run geopolitical equilibrium analysis?
This MCP server uses pay-per-event pricing at $0.045 per tool call. Each tool fires 4-7 underlying data actors in parallel — the platform compute cost is included in the per-event price.
| Scenario | Tool calls | Cost per call | Total cost |
|---|---|---|---|
| Quick test (single analysis) | 1 | $0.045 | $0.045 |
| Small research session | 10 | $0.045 | $0.45 |
| Full scenario analysis (all 8 tools) | 8 | $0.045 | $0.36 |
| Weekly monitoring workflow | 50 | $0.045 | $2.25 |
| Enterprise research program | 500 | $0.045 | $22.50 |
Apify's free plan includes $5 of monthly credits — enough for approximately 110 tool calls at no cost. You can set a maximum spending limit per run to control costs; the server stops when your budget is reached.
Compare this to Oxford Analytica or Stratfor subscriptions at $500-5,000/month, or Bloomberg Terminal access at $2,000/month — this server delivers quantitative mathematical modeling grounded in live data for a fraction of the cost with no subscription commitment.
Using this MCP server via the API
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/adversarial-geopolitical-equilibrium-mcp").call(run_input={})
# The MCP server runs in standby mode — connect via HTTP instead of polling dataset
# For direct tool calls, use the HTTP endpoint below
print(f"Server running at: https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp")
print(f"Run ID: {run['id']}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
// The server runs in standby mode — interact via MCP HTTP endpoint
const response = await fetch(
"https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp?token=YOUR_API_TOKEN",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "analyze_sanctions_cascade",
arguments: {
target_countries: ["RU"],
all_countries: ["US", "CN", "RU", "GB", "DE", "JP", "IN", "TR", "KR"],
max_cascade_rounds: 8
}
},
id: 1
})
}
);
const result = await response.json();
const cascade = JSON.parse(result.result.content[0].text);
console.log(`Cascade rounds: ${cascade.cascade.rounds}`);
console.log(`Total GDP impact: ${cascade.cascade.totalGdpImpact}`);
console.log(`Countries affected: ${cascade.cascade.totalAffected}`);
cURL
# Call the analyze_sanctions_cascade tool directly
curl -X POST "https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "analyze_sanctions_cascade",
"arguments": {
"target_countries": ["RU"],
"all_countries": ["US", "CN", "RU", "GB", "DE", "JP", "IN", "TR", "KR", "AU"]
}
},
"id": 1
}'
# List all available tools
curl -X POST "https://adversarial-geopolitical-equilibrium-mcp.apify.actor/mcp?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}'
How the Adversarial Geopolitical Equilibrium MCP Server works
Data collection phase
Each tool call triggers parallel execution of 4-7 Apify actors via runActorsParallel with 180-second timeouts. The actor set varies by tool: analyze_sanctions_cascade queries OFAC, OpenSanctions, UN COMTRADE, Interpol, and Congress Bills simultaneously; compute_interlocking_equilibria pulls OFAC, OpenSanctions, IMF, World Bank, and UN COMTRADE in parallel. Sanctions records flag country actors as sanctioned=true, modifying payoff functions in the game-theoretic models. UN COMTRADE trade data constructs the weighted hyperedges in the cascade model.
Game-theoretic computation phase
The scoring engine in scoring.ts selects the appropriate algorithm after data collection. The Bayesian Extensive-Form Game uses a Mulberry32 seeded PRNG for reproducibility. Player types (hawkish/dovish, protectionist/free-trade) derive from country parameters; beliefs initialize from type priors and update via Bayes' rule at each information set. Quantal Response Equilibrium with softmax action selection guarantees existence where pure Nash equilibria may not. The HJI escalation model discretizes state space x = (escalation_level, posture_1, posture_2, crisis_intensity, deescalation_pressure) and applies Euler-Maruyama forward simulation with Box-Muller normal shocks.
Alliance and Blotto computation
The VCG mechanism generates all sub-coalitions, computes characteristic function values from aggregate capability scores, and calculates Shapley values as average marginal contributions across all permutations. Core stability checks whether any sub-coalition has incentive to defect. The Colonel Blotto solver applies SDP moment relaxation with iterative best response across 5 domains using domain-specific capability multipliers: cyberCapability for the cyber domain, militarySpending/gdp for conventional, nuclearCapable flag for the nuclear domain.
Tips for best results
-
Use
compute_interlocking_equilibriaas your starting point. It delivers system-level stability, dominant arena, and cross-arena linkages in one call — use the output to select which specialized tool to run next. -
Include 8+ countries in cascade simulations. With fewer than 8, many trade hyperedges are missing and cascade rounds undercount. Include the target's top 5-7 trade partners by bilateral volume.
-
Pair
detect_strategic_misperceptionwith equilibrium analysis. The equilibrium shows what rational actors should do; misperception analysis reveals why they might not. The gap between equilibrium play and perceived equilibrium play is the primary indicator of unintended escalation risk. -
Vary
initial_crisis_intensityacross three levels (0.3, 0.6, 0.9) for the same dyad to get a scenario range. Peak escalation and saddle point values shift significantly — these become your wargame brackets. -
Interpret Nash deviation scores carefully. Below 0.01 = converged equilibrium, reliable for inference. Above 0.05 = not converged; increase
max_iterationsto 500-1000 for complex multi-party scenarios. -
Alliance analysis requires 3+ countries. With 2 countries the VCG mechanism degenerates. For NATO subgroup analysis, include the external threat actor in a
detect_strategic_misperceptioncall for full context.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| OFAC Sanctions Search | Run targeted entity lookups before cascade analysis to verify exact sanctions status for named actors and sub-state entities in the scenario |
| OpenSanctions Search | Cross-reference specific individuals identified as persons of interest in forecast_regime_transitions output against global PEP and watchlist databases |
| UN COMTRADE Search | Pull detailed commodity-level trade data between specific dyads to manually calibrate hyperedge weights before running analyze_sanctions_cascade |
| Congress Bill Search | Track sanctions legislation progression to anticipate future OFAC designations and model pre-emptive behavioral responses in equilibrium analysis |
| IMF Economic Data | Enrich country baseline parameters with current debt-to-GDP, current account balances, and reserve levels for more accurate stability scoring in forecast_regime_transitions |
| Federal Register Search | Monitor executive orders and OFAC regulatory updates to identify new sanctions authorities that would change cascade model inputs |
| GDACS Disaster Alerts | Incorporate real-time disaster data as destabilizing shocks in regime transition forecasts and simulate_geopolitical_agents scenarios |
Limitations
- Baseline country parameters are approximations — GDP, military spending, and capability scores are derived from publicly available estimates; classified capabilities (actual nuclear warhead counts, offensive cyber unit strength) are not modeled
- 20-country universe only — The server supports US, CN, RU, GB, FR, DE, JP, IN, KR, AU, IL, IR, SA, TR, BR, KP, UA, TW, PK, PL; other ISO codes use fallback default parameters that produce unreliable results
- QRE approximates, not exact Nash — The Quantal Response Equilibrium approach guarantees existence and convergence but finds the logit approximation to Nash equilibrium, not the exact mixed strategy Nash; pure strategy Nash equilibria may exist but not be identified
- HJI results are stochastic — Euler-Maruyama simulation with stochastic shocks means escalation trajectories vary between runs even for identical inputs; the saddle point and peak escalation are central estimates with implicit variance
- Sanctions cascade uses simplified gravity model — Trade hyperedge weights are estimated from GDP and trade openness parameters, not actual bilateral trade volumes; for high-stakes analysis, combine with direct UN COMTRADE queries
- Models assume bounded rationality, not irrationality — Quantal response models noise and errors in optimization, but cannot capture truly irrational behavior, domestic political constraints, or leader-specific psychology
- Data freshness depends on upstream sources — Live data is fetched at call time, but source update frequencies vary; OFAC updates daily, UN COMTRADE lags by months, World Bank annual
- Alliance mechanism requires 3+ countries — The VCG mechanism and Shapley value computation degenerate with fewer than 3 coalition members
Integrations
- Zapier — Trigger sanctions cascade analyses on a schedule and push results to Slack, Notion, or email for automated geopolitical briefings
- Make — Build multi-step workflows that combine this server's equilibrium outputs with news monitoring actors and CRM updates for institutional clients
- Google Sheets — Export escalation trajectories, Shapley values, and cascade data directly to shared spreadsheets for collaborative analysis
- Apify API — Integrate MCP tool calls into Python or JavaScript pipelines for automated scenario modeling in research or policy workflows
- Webhooks — Receive alerts when high escalation peaks or cascade tipping points are detected in scheduled monitoring runs
- LangChain / LlamaIndex — Expose the 8 tools as LangChain tools or LlamaIndex query engines for autonomous geopolitical reasoning agents
Troubleshooting
-
Tool returns
error: Need at least 2 valid countries— Codes must be from the 20 supported countries in uppercase: US, CN, RU, GB, FR, DE, JP, IN, KR, AU, IL, IR, SA, TR, BR, KP, UA, TW, PK, PL. Full names and lowercase are not accepted. -
dataSourcesfields show 0 records — An upstream actor returned empty results due to rate limiting or narrow query terms. The game-theoretic computation still runs using baseline parameters. Retry the call or broaden the country set. -
Nash deviation above 0.05 — Equilibrium did not converge. Increase
max_iterationsto 500 or 1000, or reduce the country set — large multi-actor scenarios require significantly more iterations. -
timeToDeescalation: null— The HJI simulation found no saddle point within the window. Try a slightly higherinitial_crisis_intensity, or treat the result as indicating persistent high escalation — which is itself a meaningful finding. -
Spending limit reached error — Set a higher
maxTotalChargeUsdon the run, or check your account balance. The free plan's $5 credit covers approximately 110 tool calls.
Responsible use
- This server only accesses publicly available data from official government, international organization, and public databases.
- Mathematical equilibrium outputs are analytical tools — they are not predictions of real-world events and should not be used as the sole basis for decisions affecting real geopolitical situations.
- Comply with applicable export control laws (EAR, ITAR) when using geopolitical analysis outputs in commercial contexts involving foreign persons or entities.
- Do not use outputs to facilitate sanctions evasion, provide material support to sanctioned entities, or circumvent OFAC compliance obligations.
- For guidance on responsible use of geopolitical data, consult your legal counsel and applicable OFAC guidance.
❓ FAQ
How accurate are the adversarial geopolitical equilibrium computations? The models apply well-established game-theoretic frameworks — Perfect Bayesian Equilibrium, VCG mechanism design, Hamilton-Jacobi-Isaacs differential games — calibrated with live data from 16 sources. Nash deviation scores below 0.01 indicate converged equilibria. Results are rigorous directional insights, not point predictions of specific real-world events.
How many countries can I include in a single geopolitical analysis?
The server supports up to 8 countries for compute_interlocking_equilibria, up to 20 for analyze_sanctions_cascade, and up to 8 for design_alliance_mechanism. All countries must be from the 20 pre-calibrated state actors. Larger country sets produce more realistic cascade and alliance results but require more computation time.
Does this MCP server use real-time data or cached data? Data is fetched live at query time from all 16 sources. OFAC and OpenSanctions sanctions data is current to within 24 hours; UN COMTRADE trade data reflects the latest available dataset (typically lags 2-6 months); World Bank and IMF data reflects the most recent published indicators. There is no caching layer.
Can I analyze countries not in the default 20? Countries outside the 20 pre-calibrated set (US, CN, RU, GB, FR, DE, JP, IN, KR, AU, IL, IR, SA, TR, BR, KP, UA, TW, PK, PL) fall back to generic default parameters: GDP $100B, military spending $5B, no nuclear capability, cyber score 0.3, stability 0.5, trade openness 0.3. Results for non-calibrated countries should be treated as approximate.
What is the difference between compute_interlocking_equilibria and simulate_geopolitical_agents?
compute_interlocking_equilibria analyzes equilibria across multiple arenas simultaneously and identifies cross-arena linkages — it answers "what is the stable outcome across all geopolitical dimensions?". simulate_geopolitical_agents focuses on a single arena with richer agent-level output, including individual belief systems and payoff distributions — it answers "how do specific actors behave in this one game?".
How does the sanctions cascade model decide which countries get pulled in? The cascade uses a threshold model on a directed weighted trade hypergraph. Each country has a resilience threshold computed from GDP, trade openness, and internal stability. When a country's cumulative pressure from already-sanctioned trade partners exceeds its threshold, it joins the sanctioned set. Secondary sanctions compliance pressure from the US amplifies the cascade — countries with high US trade exposure face additional pressure beyond direct trade linkages.
Is it legal to use this data for commercial geopolitical analysis? All data sources are publicly available government and international organization datasets. OFAC, OpenSanctions, UN COMTRADE, World Bank, and IMF data are freely available for commercial use subject to each source's terms. There are no restrictions on using publicly available sanctions and trade data for analysis. Consult your legal counsel for export control and sanctions compliance obligations specific to your use case.
How is this different from Bloomberg Terminal or Oxford Analytica? Bloomberg and Oxford Analytica provide narrative analysis and proprietary datasets with expert human judgment. This server provides quantitative mathematical modeling — equilibria, Shapley values, escalation trajectories — grounded in open public data. It is a computational tool for AI agents and analysts who need structured quantitative outputs, not a replacement for expert geopolitical judgment.
How long does a typical geopolitical equilibrium tool call take?
Each call runs 4-7 actors in parallel with 180-second timeouts. Most calls complete in 30-90 seconds depending on upstream API response times. analyze_sanctions_cascade with 12+ countries tends to be slower (60-120 seconds) due to the larger UN COMTRADE query. The server runs in standby mode so there is no cold start delay.
Can I schedule recurring geopolitical scenario monitoring?
Yes. Use Apify's built-in scheduling to run scenarios daily or weekly. Combine with webhooks to push results to Slack or email when specific thresholds are breached — for example, when forecast_regime_transitions returns a probability above 0.6 for a country you are monitoring.
What happens if an upstream data actor fails during a tool call?
The runActorsParallel function handles upstream failures gracefully — if one actor returns an error or empty results, it returns an empty array for that data source. The game-theoretic computation still runs using baseline country parameters. The dataSources fields in the response indicate how many records were retrieved from each source, so you can see exactly which upstream calls succeeded.
Can I use this MCP server with LangChain or LlamaIndex for autonomous agent workflows?
Yes. The server implements the standard MCP protocol, making all 8 tools available to any framework that supports MCP tool calling. LangChain's apify integration and LlamaIndex's Apify reader can both connect to this server. The structured JSON outputs are designed for programmatic consumption by agents.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- 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 country calibrations, additional mathematical frameworks, or enterprise integrations, reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
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.
Related actors
Bulk Email Verifier
Verify email deliverability at scale. MX record validation, SMTP mailbox checks, disposable and role-based detection, catch-all flagging, and confidence scoring. No external API costs.
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Website Tech Stack Detector
Detect 100+ web technologies on any website. Identifies CMS, frameworks, analytics, marketing tools, chat widgets, CDNs, payment systems, hosting, and more. Batch-analyze multiple sites with version detection and confidence scoring.
Ready to try Adversarial Geopolitical Equilibrium MCP Server?
Start for free on Apify. No credit card required.
Open on Apify Store