# Sovereign Debt Crisis MCP (`ryanclinton/sovereign-debt-crisis-mcp`) Actor

MCP intelligence server for sovereign debt crisis detection and analysis.

- **URL**: https://apify.com/ryanclinton/sovereign-debt-crisis-mcp.md
- **Developed by:** [ryan clinton](https://apify.com/ryanclinton) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event + usage

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Sovereign Debt Crisis MCP

A Model Context Protocol server implementing an endogenous political economy sovereign default simulator. Fuses macroeconomic, trade, FX, regulatory, and geopolitical data from **15 Apify actors** into a sovereign debt network, then applies game theory, econometrics, and mechanism design to simulate defaults, contagion, and political transitions.

### Tools (8)

| ## | Tool | Method | Price |
|---|------|--------|-------|
| 1 | `simulate_sovereign_default` | Eaton-Gersovitz (1981) value function iteration on (b,y) state space | $0.045 |
| 2 | `compute_clearing_contagion` | Eisenberg-Noe (2001) + CDS circularity (Scarf-type damped iteration) | $0.045 |
| 3 | `estimate_fiscal_sustainability` | Hansen (1999) panel threshold regression with bootstrap inference | $0.035 |
| 4 | `design_optimal_restructuring` | Myerson mechanism design + Nash-Rubinstein alternating offers | $0.040 |
| 5 | `model_speculative_attack` | Morris-Shin (2003) global games with unique switching equilibrium | $0.040 |
| 6 | `detect_crisis_jumps` | Lee-Mykland (2008) non-parametric jump detection via bipower variation | $0.035 |
| 7 | `forecast_multi_frequency` | MIDAS regression (Ghysels 2004) with Almon exponential lag polynomials | $0.035 |
| 8 | `assess_political_transition_risk` | Acemoglu-Robinson (2006) inequality-driven regime transitions | $0.035 |

### Data Sources (15 actors across 5 categories)

**Macro (6):** IMF, World Bank, FRED, BLS, OECD, Eurostat
**Trade (2):** UN COMTRADE, World Bank Projects
**FX (3):** Exchange Rates, Historical Exchange Rates, ECB Exchange Rates
**Regulatory (2):** Federal Register, Congress Bills
**Geopolitical (2):** OpenSanctions, REST Countries

### Mathematical Foundations

#### Tool 1: Sovereign Default — Eaton-Gersovitz Model

The canonical model of strategic sovereign default. A small open economy with income y and debt b chooses between repayment and default:

- **Continuation value:** V_c(b,y) = max_{b'} u(c) + β·E[max(V_c(b',y'), V_d(y'))]
  where c = y - b + q(b',y)·b'
- **Default value:** V_d(y) = u(y^def) + β·E[θ·V_c(0,y') + (1-θ)·V_d(y')]
- **Bond price:** q(b',y) = E[1{no default}]/(1+r_f) — endogenous risk pricing

The default threshold, borrowing policy, and equilibrium spreads are all simultaneously determined as a fixed point.

#### Tool 2: Clearing Contagion — Eisenberg-Noe with CDS

Standard Eisenberg-Noe finds clearing payments via monotone fixed-point iteration (Tarski's theorem). CDS circularity breaks monotonicity: bank A's solvency depends on bank B paying CDS protection, but B's ability to pay depends on C, which depends on A. The non-monotone mapping requires **Scarf-type damped iteration** with a convergence rate of O(1/k) instead of the geometric convergence of standard methods.

#### Tool 3: Fiscal Sustainability — Hansen Threshold Regression

Tests whether fiscal behavior changes regime at a debt-to-GDP threshold γ. The model y_it = α_i + β₁·x·I(q≤γ) + β₂·x·I(q>γ) + ε classifies countries into sustainable vs. unsustainable fiscal regimes. The threshold is identified by minimizing concentrated SSR over a grid, with significance assessed via **Hansen bootstrap** (asymptotic distribution is non-standard — mixture of chi-squareds).

#### Tool 4: Optimal Restructuring — Myerson + Rubinstein

Combines mechanism design with bargaining theory:
- **Myerson revelation principle**: Debtor type θ (capacity to pay) is private info. IC constraints require monotone transfer schedules.
- **Nash bargaining**: max (u_d - d_d)^α · (u_c - d_c)^(1-α) gives fair surplus split.
- **Rubinstein alternating offers**: First-mover share = (1-δ_c)/(1-δ_d·δ_c) where δ are discount factors. More patient player captures more surplus.

#### Tool 5: Speculative Attack — Morris-Shin Global Games

Resolves the **Obstfeld (1996) indeterminacy** (multiple equilibria in currency crises) via incomplete information. Speculators receive private signals x_i = θ + σ·ε_i about fundamentals θ. With finite signal precision (σ > 0), there exists a **unique switching equilibrium** θ*: speculators attack iff x_i < θ*, and the peg collapses iff θ < θ*. This is perhaps the most elegant application of global games to macroeconomics.

#### Tool 6: Crisis Jumps — Lee-Mykland Test

Non-parametric detection of jumps in CDS/spread data:
- **Bipower variation** σ̂² estimates continuous volatility while being robust to jumps
- Test statistic L_i = |Δlog(X_i)| / σ̂_i
- Under H₀: (L_i - C_n)/S_n converges to **Gumbel distribution**
- Centering: C_n = √(2·log(n)) - [log(π)+log(log(n))] / [2√(2·log(n))]

#### Tool 7: Multi-Frequency Forecast — MIDAS Regression

Bridges the frequency gap between daily financial data and quarterly macro data:
- y_t^(Q) = β₀ + β₁ · Σ_k B(k;θ)·x_{t-k}^(D) + ε_t
- **Almon exponential weights**: B(k;θ₁,θ₂) = exp(θ₁k+θ₂k²) / Σexp(...)
- Parsimonious: 2 parameters govern the entire high-frequency lag structure
- Nowcasting: current-quarter prediction using within-quarter high-freq data

#### Tool 8: Political Transition — Acemoglu-Robinson

Models political transitions as inequality-driven Markov dynamics:
- **Elite regime**: Concedes redistribution when revolution threat θ exceeds threshold
- **Democratic regime**: Median voter taxation at τ_m
- **Coup risk**: Elite military capacity × (1 - cost of coup)
- **Gini threshold**: Inequality crossing critical level triggers transition
- Markov chain over {democratic, hybrid, authoritarian} with endogenous transition probabilities

### Architecture

````

Client ──► Express (port 3019) ──► McpServer factory
│
┌─────────────┼─────────────┐
▼             ▼             ▼
SSE transport  Streamable HTTP  Health endpoint
│             │
▼             ▼
getOrBuildNetwork() (5-min TTL cache)
│
┌───────────┼───────────┐
▼           ▼           ▼
15 Apify actors   Graph build   8 analysis tools
(parallel fetch)  (fusion)      (per-request)

````

### Usage

```bash
npm install
npm run build
npm start
````

Environment variables:

- `APIFY_TOKEN` — Apify API token for actor execution
- `PORT` — Server port (default: 3019)

### Endpoints

- `GET /sse` — SSE transport for MCP
- `POST /messages?sessionId=...` — SSE message handler
- `POST /mcp` — Streamable HTTP transport
- `GET /health` — Health check with network stats

# Actor input Schema

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ryanclinton/sovereign-debt-crisis-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("ryanclinton/sovereign-debt-crisis-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call ryanclinton/sovereign-debt-crisis-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ryanclinton/sovereign-debt-crisis-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sovereign Debt Crisis MCP",
        "description": "MCP intelligence server for sovereign debt crisis detection and analysis.",
        "version": "1.0",
        "x-build-id": "CwhOa8i2ESXy2aURe"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ryanclinton~sovereign-debt-crisis-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ryanclinton-sovereign-debt-crisis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ryanclinton~sovereign-debt-crisis-mcp/runs": {
            "post": {
                "operationId": "runs-sync-ryanclinton-sovereign-debt-crisis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ryanclinton~sovereign-debt-crisis-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-ryanclinton-sovereign-debt-crisis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {}
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
