@riskmodels/mcp 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.md +130 -0
- package/README.md +196 -0
- package/data/capabilities.json +924 -0
- package/data/openapi.json +6760 -0
- package/data/schema-paths.json +16 -0
- package/data/schemas/error-v1.json +49 -0
- package/data/schemas/estimate-v1.json +49 -0
- package/data/schemas/factor-correlation-request-v1.json +55 -0
- package/data/schemas/factor-correlation-v1.json +31 -0
- package/data/schemas/health-v1.json +85 -0
- package/data/schemas/l3-decomposition-v1.json +125 -0
- package/data/schemas/macro-factors-series-v1.json +45 -0
- package/data/schemas/portfolio-risk-index-v1.json +48 -0
- package/data/schemas/portfolio-risk-snapshot-v1.json +134 -0
- package/data/schemas/risk-metadata-v1.json +35 -0
- package/data/schemas/telemetry-v1.json +122 -0
- package/data/schemas/ticker-returns-v2.json +114 -0
- package/data/schemas/tickers-list-v1.json +64 -0
- package/data/whitepaper/01-core-claim.md +10 -0
- package/data/whitepaper/02-aapl-vs-nvda.md +9 -0
- package/data/whitepaper/03-hedging.md +7 -0
- package/data/whitepaper/examples-aapl-nvda-crwd.md +7 -0
- package/data/whitepaper/one-position-four-bets.md +14 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/lib/mcp/tools/riskmodels-tools.d.ts +34 -0
- package/dist/lib/mcp/tools/riskmodels-tools.js +211 -0
- package/dist/mcp/src/index.d.ts +9 -0
- package/dist/mcp/src/index.js +19 -0
- package/dist/mcp/src/server.d.ts +25 -0
- package/dist/mcp/src/server.js +434 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +1 -0
- package/package.json +39 -0
- package/scripts/write-dist-wrappers.mjs +29 -0
- package/src/index.ts +22 -0
- package/src/server.ts +555 -0
- package/tsconfig.json +15 -0
package/INSTALL.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# RiskModels MCP — Client Install Guide
|
|
2
|
+
|
|
3
|
+
Copy-paste configs for Claude Desktop, Cursor, and Zed. Works with any [MCP](https://modelcontextprotocol.io) client that supports stdio servers.
|
|
4
|
+
|
|
5
|
+
## Prerequisites (one time)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 1. Get an API key (Stripe card on file, $20 free credit before first charge)
|
|
9
|
+
npm install -g riskmodels
|
|
10
|
+
riskmodels config init # stores key at ~/.config/riskmodels/config.json
|
|
11
|
+
|
|
12
|
+
# 2. Build the MCP server (from this repo)
|
|
13
|
+
cd RiskModels_API/mcp
|
|
14
|
+
npm install && npm run build
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The MCP server reads your API key from `~/.config/riskmodels/config.json` automatically — no need to embed the key in every MCP client config.
|
|
18
|
+
|
|
19
|
+
Replace `/ABSOLUTE/PATH/TO/RiskModels_API` below with the actual absolute path to your clone of this repo.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Claude Desktop
|
|
24
|
+
|
|
25
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"mcpServers": {
|
|
30
|
+
"riskmodels": {
|
|
31
|
+
"command": "node",
|
|
32
|
+
"args": ["/ABSOLUTE/PATH/TO/RiskModels_API/mcp/dist/index.js"]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Restart Claude Desktop. In a new conversation you should see the RiskModels tools listed — try "Run `get_l3_decomposition` for NVDA."
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Cursor
|
|
43
|
+
|
|
44
|
+
This repo ships `.cursor/mcp.json` pointing at the built server, so opening `RiskModels_API/` as a workspace folder auto-wires it. For a different layout, edit `.cursor/mcp.json`:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"mcpServers": {
|
|
49
|
+
"riskmodels-api": {
|
|
50
|
+
"command": "node",
|
|
51
|
+
"args": ["mcp/dist/index.js"]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Use absolute paths if Cursor's workspace root is not `RiskModels_API/`. Reload MCP (Settings → MCP → Reload) after saving.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Zed
|
|
62
|
+
|
|
63
|
+
Edit `~/.config/zed/settings.json`:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"context_servers": {
|
|
68
|
+
"riskmodels": {
|
|
69
|
+
"command": {
|
|
70
|
+
"path": "node",
|
|
71
|
+
"args": ["/ABSOLUTE/PATH/TO/RiskModels_API/mcp/dist/index.js"]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Restart Zed. Use the assistant panel with `@riskmodels` to call tools.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Overriding the API key per-client (optional)
|
|
83
|
+
|
|
84
|
+
If you want a different key for a specific MCP client (e.g., a scoped `rm_agent_mcp_*` key for Claude Desktop, a broader key for Cursor), set `RISKMODELS_API_KEY` in that client's MCP env block. Env takes precedence over the CLI config file:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"mcpServers": {
|
|
89
|
+
"riskmodels": {
|
|
90
|
+
"command": "node",
|
|
91
|
+
"args": ["/ABSOLUTE/PATH/TO/RiskModels_API/mcp/dist/index.js"],
|
|
92
|
+
"env": {
|
|
93
|
+
"RISKMODELS_API_KEY": "rm_agent_...",
|
|
94
|
+
"RISKMODELS_API_BASE": "https://riskmodels.app"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Verifying the install
|
|
104
|
+
|
|
105
|
+
Once the server is wired up, ask the assistant:
|
|
106
|
+
|
|
107
|
+
> "List all RiskModels tools."
|
|
108
|
+
|
|
109
|
+
You should see:
|
|
110
|
+
|
|
111
|
+
- **Discovery** — `riskmodels_list_endpoints`, `riskmodels_get_capability`, `riskmodels_get_schema`
|
|
112
|
+
- **Data** — `get_metrics`, `get_l3_decomposition`, `get_portfolio_risk_snapshot`
|
|
113
|
+
|
|
114
|
+
Then:
|
|
115
|
+
|
|
116
|
+
> "Get the L3 decomposition for NVDA with 1 year of history."
|
|
117
|
+
|
|
118
|
+
Every data-tool response includes a meter envelope (`_cost_usd`, `_remaining_daily_usd`, `_rate_limit_remaining`, `_data_as_of`) so the agent can see the meter running and self-throttle.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Troubleshooting
|
|
123
|
+
|
|
124
|
+
| Symptom | Fix |
|
|
125
|
+
|---------|-----|
|
|
126
|
+
| Tools don't appear | Fully quit and relaunch the client (not just reload). Stdio servers spawn at client start. |
|
|
127
|
+
| `RISKMODELS_API_KEY not found` in tool response | Run `riskmodels config init` or set the env var in the MCP client config. |
|
|
128
|
+
| `API 401` in tool response | Key is invalid or revoked. `riskmodels config init` to mint a fresh one. |
|
|
129
|
+
| `API 429` in tool response | Hit the per-minute rate limit. Default is 60/min; scoped MCP keys are tighter. Wait or ask an admin to bump. |
|
|
130
|
+
| `get_l3_decomposition` returns `Symbol not found` | Ticker is not in the RiskModels universe. Try `riskmodels_get_capability { id: "tickers" }` for the universe endpoint. |
|
package/README.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# RiskModels API MCP Server
|
|
2
|
+
|
|
3
|
+
NPM package: `@riskmodels/mcp`
|
|
4
|
+
|
|
5
|
+
Release note: publish `@riskmodels/sdk` first, then add the published SDK version as a runtime dependency before publishing this package.
|
|
6
|
+
|
|
7
|
+
**Decompose** a US stock into market, sector, subsector, and residual risk — with SPY / sector / subsector **ETF hedge ratios**. One call, daily history since 2006.
|
|
8
|
+
|
|
9
|
+
MCP server that exposes **RiskModels API** inside [Claude Desktop](https://claude.ai/download), [Cursor](https://cursor.com), [Zed](https://zed.dev), and any other [MCP](https://modelcontextprotocol.io) client. Two classes of tools:
|
|
10
|
+
|
|
11
|
+
- **Discovery tools** — list endpoints, read capabilities, fetch response schemas (no API key required).
|
|
12
|
+
- **Data tools** — fetch daily EOD risk decomposition, metrics snapshots, and portfolio risk reports (API key required).
|
|
13
|
+
|
|
14
|
+
Data tools return the same numbers the REST API and CLI return — GCP zarr for historical time series, Supabase `security_history_latest` for the latest snapshot. Data freshness: daily after US market close.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Resources (read-only, no auth)
|
|
19
|
+
|
|
20
|
+
| URI | Description |
|
|
21
|
+
|-----|-------------|
|
|
22
|
+
| `riskmodels:///manifest` | Agent Protocol manifest. Fetches from `RISKMODELS_API_BASE` when set; otherwise returns static capabilities. |
|
|
23
|
+
| `riskmodels:///capabilities` | Full list of API capabilities (endpoints, parameters, pricing, examples). |
|
|
24
|
+
| `riskmodels:///schemas/list` | List of available response schema paths. |
|
|
25
|
+
| `riskmodels:///schemas/{path}` | JSON schema for a response (e.g. `ticker-returns-v2.json`). |
|
|
26
|
+
| `riskmodels:///openapi` | OpenAPI 3.x spec (`data/openapi.json`). |
|
|
27
|
+
| `riskmodels://whitepaper/one-position-four-bets` | Live-paper overview for the Medium article. |
|
|
28
|
+
| `riskmodels://whitepaper/chapter/01-core-claim` | Short markdown chapter: one position is four bets. |
|
|
29
|
+
| `riskmodels://whitepaper/chapter/02-aapl-vs-nvda` | Short markdown chapter for the AAPL vs NVDA comparison. |
|
|
30
|
+
| `riskmodels://whitepaper/chapter/03-hedging` | Short markdown chapter for hedge-ratio scaling. |
|
|
31
|
+
| `riskmodels://examples/aapl-nvda-crwd` | Short markdown example for a three-name comparison. |
|
|
32
|
+
|
|
33
|
+
## Discovery tools (no auth)
|
|
34
|
+
|
|
35
|
+
| Tool | Description |
|
|
36
|
+
|------|-------------|
|
|
37
|
+
| `riskmodels_list_endpoints` | List all public API capabilities (id, name, method, endpoint, short description). |
|
|
38
|
+
| `riskmodels_get_capability` | Get full capability by id (parameters, pricing, examples). |
|
|
39
|
+
| `riskmodels_get_schema` | Get JSON schema by path (e.g. `ticker-returns-v2.json`). |
|
|
40
|
+
|
|
41
|
+
## Data tools (API key required)
|
|
42
|
+
|
|
43
|
+
| Tool | Wraps | What it returns |
|
|
44
|
+
|------|-------|-----------------|
|
|
45
|
+
| `get_l3_decomposition` | `GET /api/l3-decomposition` | Daily EOD hierarchical decomposition (market → sector → subsector → residual) with parallel time-series arrays + L3 hedge ratios. |
|
|
46
|
+
| `get_metrics` | `GET /api/metrics/{ticker}` | Latest snapshot from the `_latest` table: L1/L2/L3 hedge ratios, ER fractions, volatility, close price, market cap. |
|
|
47
|
+
| `get_portfolio_risk_snapshot` | `POST /api/portfolio/risk-snapshot` | Portfolio variance decomposition (up to 100 positions), optional diversification analytics, Redis-cached per user/portfolio for 1h. |
|
|
48
|
+
| `riskmodels_decompose` | `POST /api/decompose` via `@riskmodels/sdk` | Single-stock four-bet decomposition with `chart_data`, `suggested_chart`, `plain_english`, and `api_call`. |
|
|
49
|
+
| `riskmodels_compare` | `POST /api/batch/analyze` via `@riskmodels/sdk` | Multi-ticker four-layer comparison. Clients should prefer grouped bar charts. |
|
|
50
|
+
| `riskmodels_hedge_position` | `POST /api/decompose` via `@riskmodels/sdk` | Scales hedge ratios to ETF notionals for a dollar stock position. |
|
|
51
|
+
| `riskmodels_portfolio_decompose` | `POST /api/portfolio/risk-snapshot` via `@riskmodels/sdk` | Portfolio-level market / sector / subsector / residual decomposition. |
|
|
52
|
+
| `riskmodels_whitepaper_example` | `@riskmodels/sdk.whitepaperExample()` | Chapter text plus the live SDK/API example result. |
|
|
53
|
+
|
|
54
|
+
## Prompts
|
|
55
|
+
|
|
56
|
+
| Prompt | Description |
|
|
57
|
+
|--------|-------------|
|
|
58
|
+
| `follow_whitepaper` | Reads the short white-paper resources, then runs the live examples in sequence. |
|
|
59
|
+
| `reproduce_aapl_nvda` | Compares AAPL and NVDA and asks the client to render grouped `chart_data`. |
|
|
60
|
+
| `hedge_single_position` | Scales hedge ratios to a chosen ticker and dollar position. |
|
|
61
|
+
| `explain_my_portfolio` | Collects user holdings and calls `riskmodels_portfolio_decompose`. |
|
|
62
|
+
|
|
63
|
+
Whenever a tool response includes `chart_data`, clients should render the `suggested_chart` and explain the result in plain English.
|
|
64
|
+
|
|
65
|
+
Every data-tool response includes a meter envelope so agents can self-throttle:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
...actual data...,
|
|
70
|
+
"_cost_usd": 0.003,
|
|
71
|
+
"_remaining_daily_usd": 4.997,
|
|
72
|
+
"_rate_limit_remaining": 59,
|
|
73
|
+
"_data_as_of": "2026-04-15",
|
|
74
|
+
"_data_source": "zarr"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Credentials
|
|
79
|
+
|
|
80
|
+
The server resolves the API key in this order:
|
|
81
|
+
|
|
82
|
+
1. `RISKMODELS_API_KEY` from the MCP client's env config (explicit override).
|
|
83
|
+
2. `apiKey` field in `~/.config/riskmodels/config.json` (shared with the `riskmodels` CLI).
|
|
84
|
+
|
|
85
|
+
Run `riskmodels config init` once — the CLI's stored key is automatically picked up by the MCP server. No need to duplicate the key in your `claude_desktop_config.json`.
|
|
86
|
+
|
|
87
|
+
Base URL resolution: `RISKMODELS_API_BASE` env → `apiBaseUrl` in CLI config → `https://riskmodels.app` default.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Python SDK on PyPI
|
|
92
|
+
|
|
93
|
+
This MCP server exposes **discovery** (capabilities, schemas, OpenAPI). For live **`/metrics`**, **`/batch/analyze`**, **`/l3-decomposition`**, and other data routes, call the REST API or install **`riskmodels-py`** from [PyPI](https://pypi.org/project/riskmodels-py/) ([`sdk/README.md`](../sdk/README.md)).
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Setup
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
cd mcp
|
|
101
|
+
npm install
|
|
102
|
+
npm run build
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
This repo includes **`.cursor/mcp.json`** pointing at `node` + `mcp/dist/index.js` (relative to the **RiskModels_API** workspace root). After `cd mcp && npm ci && npm run build`, open **RiskModels_API** as a folder in Cursor (or add it in a multi-root workspace), then **restart Cursor** or reload MCP so **`riskmodels_list_endpoints`** appears.
|
|
106
|
+
|
|
107
|
+
### Claude Desktop / `npx` (common mistakes)
|
|
108
|
+
|
|
109
|
+
- **There is no `mcp` subcommand on the npm package.** The CLI binary is **`riskmodels`**. Do **not** run `npx -y riskmodels-cli mcp` — that legacy package does not provide the new installer flow.
|
|
110
|
+
- **Use one of these:**
|
|
111
|
+
- **`npx -y @riskmodels/mcp`** — future published stdio package target used by `npx riskmodels install`.
|
|
112
|
+
- **`riskmodels mcp-config`** — prints a ready-to-paste `mcpServers` block for Claude Desktop (`--client claude-desktop`) or Cursor. Use **`riskmodels mcp-config --embed-key`** only if you want the key in the JSON env block.
|
|
113
|
+
- **`riskmodels mcp`** — runs the stdio MCP server (same as `node mcp/dist/index.js`). Requires `mcp/dist/index.js` to exist (build `mcp/` first), or set **`RISKMODELS_MCP_SERVER_PATH`** to that file.
|
|
114
|
+
- **`node /absolute/path/to/RiskModels_API/mcp/dist/index.js`** — always works if the build exists.
|
|
115
|
+
|
|
116
|
+
### Hosted endpoint (`https://riskmodels.app/api/mcp/sse`)
|
|
117
|
+
|
|
118
|
+
The hosted endpoint implements the **MCP Streamable HTTP** transport (current SDK spec, successor to legacy SSE+companion-POST). Stateless mode: each `POST` carries a JSON-RPC 2.0 message and returns the response synchronously. Auth via `Authorization: Bearer <key>` (primary) or `?api_key=<key>` query param (fallback for clients that can't set headers, e.g. `EventSource`).
|
|
119
|
+
|
|
120
|
+
Paste into Claude Desktop / Cursor via the `mcp-remote` proxy:
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"mcpServers": {
|
|
125
|
+
"riskmodels": {
|
|
126
|
+
"command": "npx",
|
|
127
|
+
"args": ["mcp-remote", "https://riskmodels.app/api/mcp/sse"],
|
|
128
|
+
"env": { "AUTHORIZATION": "Bearer rm_agent_live_..." }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Tool calls bill per-invocation at the downstream REST endpoint (e.g. `get_metrics` costs the same as `GET /metrics/{ticker}`). Discovery tools (`riskmodels_list_endpoints`, etc.) are free.
|
|
135
|
+
|
|
136
|
+
Stdio remains available for local dev or air-gapped use (see below).
|
|
137
|
+
|
|
138
|
+
If you configure manually instead, add the server under Cursor Settings → MCP, or use a project file:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"riskmodels-api": {
|
|
144
|
+
"command": "node",
|
|
145
|
+
"args": ["/absolute/path/to/RiskModels_API/mcp/dist/index.js"]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
You can also point **`command`** at your `riskmodels` CLI and **`args`** at `["mcp"]` if the CLI is on `PATH` and `mcp/dist/index.js` is discoverable (repo root or `RISKMODELS_MCP_SERVER_PATH`).
|
|
152
|
+
|
|
153
|
+
If **RiskModels_API** is the workspace root, a relative path is enough:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
"args": ["mcp/dist/index.js"]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Restart Cursor after editing the config.
|
|
160
|
+
|
|
161
|
+
**Optional:** Set `RISKMODELS_API_BASE=https://riskmodels.app` so the manifest resource fetches the live agent manifest from the API.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Maintenance (for API / repo maintainers)
|
|
166
|
+
|
|
167
|
+
The MCP server serves static data from `mcp/data/`. When the live RiskModels API gains new endpoints, changes pricing, or updates response schemas, this data should be updated so Cursor and other MCP clients stay in sync.
|
|
168
|
+
|
|
169
|
+
### What gets updated
|
|
170
|
+
|
|
171
|
+
- **`data/capabilities.json`** — List of API capabilities (endpoints, methods, parameters, pricing, examples).
|
|
172
|
+
- **`data/schema-paths.json`** — List of response schema paths.
|
|
173
|
+
- **`data/schemas/*.json`** — JSON Schema files for each response type.
|
|
174
|
+
- **`data/openapi.json`** — Optional; can mirror or summarize the repo’s [OPENAPI_SPEC.yaml](../OPENAPI_SPEC.yaml).
|
|
175
|
+
|
|
176
|
+
### How to update
|
|
177
|
+
|
|
178
|
+
The **canonical API and capabilities** live in the [Risk_Models](https://github.com/BlueWaterCorp/Risk_Models) platform repo. From that repo you can run `npm run generate-mcp-data` (in `riskmodels_com/`) to regenerate `capabilities.json`, `schema-paths.json`, and `schemas/*.json` from the app’s `lib/agent` registry; then copy the updated files into this repo’s `mcp/data/`. The `openapi.json` here is a subset of the full [OPENAPI_SPEC.yaml](../OPENAPI_SPEC.yaml) and should be updated when new public endpoints are added.
|
|
179
|
+
|
|
180
|
+
1. **Obtain updated data** from the canonical source (Risk_Models) or by hand from the API application’s capabilities and schema registry.
|
|
181
|
+
2. **Replace** the contents of `mcp/data/`:
|
|
182
|
+
- `capabilities.json`
|
|
183
|
+
- `schema-paths.json`
|
|
184
|
+
- `schemas/*.json`
|
|
185
|
+
- `openapi.json` (if used)
|
|
186
|
+
3. **If server code changed** (e.g. new resources or tools): update `mcp/src/index.ts` (and any other source files), then run `npm run build` inside `mcp/`.
|
|
187
|
+
4. **Commit and push** so users who clone RiskModels_API get the latest MCP behavior and data.
|
|
188
|
+
|
|
189
|
+
### When to update
|
|
190
|
+
|
|
191
|
+
- New public API endpoints or capabilities.
|
|
192
|
+
- Changes to existing endpoints (parameters, pricing, descriptions).
|
|
193
|
+
- New or changed response schemas.
|
|
194
|
+
- OpenAPI spec changes you want reflected in the `riskmodels:///openapi` resource.
|
|
195
|
+
|
|
196
|
+
Keeping `data/` in sync with the live API after releases or significant API changes ensures the MCP server remains a reliable reference for developers and tools.
|