offnadir-delta-mcp 1.30.0 → 1.32.0
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/README.md +5 -6
- package/dist/catalog.js +19 -114
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ satellite can actually resolve it, and produce a collection-ready plan.
|
|
|
16
16
|
Real-time event and geospatial intelligence for OSINT, geopolitical risk, and GEOINT work —
|
|
17
17
|
source-linked, geolocated, and current, not a training snapshot.
|
|
18
18
|
|
|
19
|
-
`
|
|
19
|
+
`41` tools · MCP server version `1.32.0` · [full reference](https://offnadir-delta.com/docs/mcp)
|
|
20
20
|
|
|
21
21
|
## What it does
|
|
22
22
|
|
|
@@ -77,7 +77,7 @@ locally from a generated catalog, so registries can introspect it without creden
|
|
|
77
77
|
|
|
78
78
|
### First call — free
|
|
79
79
|
|
|
80
|
-
23 of the
|
|
80
|
+
23 of the 41 tools cost nothing, so the first thing you run is free:
|
|
81
81
|
|
|
82
82
|
> Give me the latest Daily World Brief. Lead with the three most significant developments,
|
|
83
83
|
> explain why each matters, and cite the supporting signals.
|
|
@@ -95,7 +95,7 @@ What is happening, where it concentrates, and what today looks like.
|
|
|
95
95
|
|
|
96
96
|
| Tool | What it does | Cost |
|
|
97
97
|
| --- | --- | --- |
|
|
98
|
-
| `query_signals` | Geolocated world events
|
|
98
|
+
| `query_signals` | Geolocated world events from global news media, AI-enriched with severity/GEOINT scores and collection recommendations. | 3 tok |
|
|
99
99
|
| `query_stats` | Roll-ups over the corpus: totals plus per-category and per-day breakdown. | 1 tok |
|
|
100
100
|
| `query_hotspots` | Where activity concentrates: density grid-binned into ranked cells with peak severity, categories and representative event_ids. | 1 tok |
|
|
101
101
|
| `get_world_brief` | The Daily World Brief — an AI digest of the previous UTC day. | free |
|
|
@@ -111,12 +111,11 @@ Whether a satellite can resolve it, which one, and when it next passes.
|
|
|
111
111
|
|
|
112
112
|
| Tool | What it does | Cost |
|
|
113
113
|
| --- | --- | --- |
|
|
114
|
-
| `search_imagery` | Search the imagery catalog
|
|
114
|
+
| `search_imagery` | Search the imagery catalog over an area and window. | 2 tok |
|
|
115
115
|
| `plan_event_imagery` | The deterministic imagery plan for ONE event: checks BOTH sensors exactly once — sentinel-1-grd (SAR, the only look that survives cloud and night) and sentinel-2-l2a — against the event footprint and a pre/post window. | 4 tok |
|
|
116
116
|
| `rank_imaging_priority` | WHERE, and with what class of satellite, observation is most worthwhile now: composite IMPORTANCE crossed with the SPEC CLASS the required resolution demands — coarse, hr (free Sentinel-class) or vhr. | 1 tok |
|
|
117
117
|
| `survey_observable_events` | Which events a sensor can actually RESOLVE, over the FULL set. | 1 tok |
|
|
118
|
-
| `predict_satellite_passes` | WHEN a place can next be imaged and by WHAT:
|
|
119
|
-
| `test_hypotheses` | Given competing statements, the observation that would REFUTE the most — and those that would refute none. | 3 tok |
|
|
118
|
+
| `predict_satellite_passes` | WHEN a place can next be imaged and by WHAT: 13 free-systematic and commercial-taskable families. | 2 tok |
|
|
120
119
|
| `lookup_elevation` | Terrain height from the Copernicus DEM GLO-30 for a point, bbox or polygon, with relief — the number that governs SAR layover and shadow. | free |
|
|
121
120
|
| `analyze_terrain` | Compute FROM the terrain. | free |
|
|
122
121
|
|
package/dist/catalog.js
CHANGED
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
* Actual `tools/call` / `resources/read` / `prompts/get` requests are forwarded
|
|
14
14
|
* to the remote server with the caller's OFFNADIR_DELTA_API_KEY (see index.ts).
|
|
15
15
|
*/
|
|
16
|
-
// Generated for Off-Nadir Delta MCP 1.
|
|
16
|
+
// Generated for Off-Nadir Delta MCP 1.32.0.
|
|
17
17
|
export const TOOLS = [
|
|
18
18
|
{
|
|
19
19
|
"name": "query_signals",
|
|
20
|
-
"description": "Geolocated world events
|
|
20
|
+
"description": "Geolocated world events from global news media, AI-enriched with severity/GEOINT scores and collection recommendations.",
|
|
21
21
|
"inputSchema": {
|
|
22
22
|
"type": "object",
|
|
23
23
|
"properties": {
|
|
@@ -450,7 +450,7 @@ export const TOOLS = [
|
|
|
450
450
|
},
|
|
451
451
|
{
|
|
452
452
|
"name": "search_imagery",
|
|
453
|
-
"description": "Search the imagery catalog
|
|
453
|
+
"description": "Search the imagery catalog over an area and window. Metadata only, no pixels. eventDate tags each scene pre/post — **a same-day scene is same_day_unknown, never post** — and eventPoint/eventAoi add target_relation, so a scene that only clips the bbox is not read as covering the event.",
|
|
454
454
|
"inputSchema": {
|
|
455
455
|
"type": "object",
|
|
456
456
|
"properties": {
|
|
@@ -766,7 +766,7 @@ export const TOOLS = [
|
|
|
766
766
|
},
|
|
767
767
|
{
|
|
768
768
|
"name": "predict_satellite_passes",
|
|
769
|
-
"description": "WHEN a place can next be imaged and by WHAT:
|
|
769
|
+
"description": "WHEN a place can next be imaged and by WHAT: 13 free-systematic and commercial-taskable families. **Every pass is a GEOMETRIC access opportunity** — no operator plan is consulted. retrieval_ok:false means timing is UNAVAILABLE, never \"no passes\".",
|
|
770
770
|
"inputSchema": {
|
|
771
771
|
"type": "object",
|
|
772
772
|
"properties": {
|
|
@@ -1457,93 +1457,6 @@ export const TOOLS = [
|
|
|
1457
1457
|
"destructiveHint": false
|
|
1458
1458
|
}
|
|
1459
1459
|
},
|
|
1460
|
-
{
|
|
1461
|
-
"name": "test_hypotheses",
|
|
1462
|
-
"description": "Given competing statements, the observation that would REFUTE the most — and those that would refute none. **The logic runs one way**: an ABSENT observable refutes every statement requiring it; a PRESENT one refutes nothing.",
|
|
1463
|
-
"inputSchema": {
|
|
1464
|
-
"type": "object",
|
|
1465
|
-
"properties": {
|
|
1466
|
-
"hypotheses": {
|
|
1467
|
-
"type": "array",
|
|
1468
|
-
"items": {
|
|
1469
|
-
"type": "string"
|
|
1470
|
-
},
|
|
1471
|
-
"minItems": 2,
|
|
1472
|
-
"maxItems": 8,
|
|
1473
|
-
"description": "Two to eight competing statements, one assertion each (<=500 chars)."
|
|
1474
|
-
},
|
|
1475
|
-
"mode": {
|
|
1476
|
-
"type": "string",
|
|
1477
|
-
"enum": [
|
|
1478
|
-
"competing",
|
|
1479
|
-
"joint"
|
|
1480
|
-
],
|
|
1481
|
-
"description": "`competing` (default): an observable required by ALL is useless. `joint`: one required by all is BEST."
|
|
1482
|
-
},
|
|
1483
|
-
"event_id": {
|
|
1484
|
-
"type": "number",
|
|
1485
|
-
"description": "Test the standing claims about this event; restated claims are excluded."
|
|
1486
|
-
}
|
|
1487
|
-
},
|
|
1488
|
-
"required": []
|
|
1489
|
-
},
|
|
1490
|
-
"outputSchema": {
|
|
1491
|
-
"type": "object",
|
|
1492
|
-
"properties": {
|
|
1493
|
-
"summary": {
|
|
1494
|
-
"type": "string",
|
|
1495
|
-
"description": "One-line natural-language summary of the result, ready to relay to a user."
|
|
1496
|
-
},
|
|
1497
|
-
"meta": {
|
|
1498
|
-
"type": "object",
|
|
1499
|
-
"description": "Query echo, token charge/balance (meta.tokens), and pagination where applicable."
|
|
1500
|
-
},
|
|
1501
|
-
"hypotheses": {
|
|
1502
|
-
"type": "array",
|
|
1503
|
-
"items": {
|
|
1504
|
-
"type": "object"
|
|
1505
|
-
}
|
|
1506
|
-
},
|
|
1507
|
-
"best": {
|
|
1508
|
-
"type": "object"
|
|
1509
|
-
},
|
|
1510
|
-
"discriminators": {
|
|
1511
|
-
"type": "array",
|
|
1512
|
-
"items": {
|
|
1513
|
-
"type": "object"
|
|
1514
|
-
}
|
|
1515
|
-
},
|
|
1516
|
-
"no_diagnostic_value": {
|
|
1517
|
-
"type": "array",
|
|
1518
|
-
"items": {
|
|
1519
|
-
"type": "object"
|
|
1520
|
-
}
|
|
1521
|
-
},
|
|
1522
|
-
"undecomposable": {
|
|
1523
|
-
"type": "array",
|
|
1524
|
-
"items": {
|
|
1525
|
-
"type": "string"
|
|
1526
|
-
}
|
|
1527
|
-
},
|
|
1528
|
-
"no_discriminator_reason": {
|
|
1529
|
-
"type": "string"
|
|
1530
|
-
},
|
|
1531
|
-
"note": {
|
|
1532
|
-
"type": "string"
|
|
1533
|
-
}
|
|
1534
|
-
},
|
|
1535
|
-
"required": [
|
|
1536
|
-
"summary",
|
|
1537
|
-
"discriminators",
|
|
1538
|
-
"note"
|
|
1539
|
-
]
|
|
1540
|
-
},
|
|
1541
|
-
"annotations": {
|
|
1542
|
-
"readOnlyHint": false,
|
|
1543
|
-
"openWorldHint": false,
|
|
1544
|
-
"destructiveHint": true
|
|
1545
|
-
}
|
|
1546
|
-
},
|
|
1547
1460
|
{
|
|
1548
1461
|
"name": "query_developments",
|
|
1549
1462
|
"description": "What actually CHANGED about the events in an area, not which articles are new. Each change is labelled `world` (the event's own state moved) or `measurement` (what we can see moved).",
|
|
@@ -2183,7 +2096,7 @@ export const TOOLS = [
|
|
|
2183
2096
|
},
|
|
2184
2097
|
"include_passes": {
|
|
2185
2098
|
"type": "boolean",
|
|
2186
|
-
"description": "Add the collection outlook. Costs the same as predict_satellite_passes
|
|
2099
|
+
"description": "Add the collection outlook. Costs the same as predict_satellite_passes; omit it and the call is free."
|
|
2187
2100
|
}
|
|
2188
2101
|
},
|
|
2189
2102
|
"required": [
|
|
@@ -2266,27 +2179,6 @@ export const TOOLS = [
|
|
|
2266
2179
|
"type": "object"
|
|
2267
2180
|
}
|
|
2268
2181
|
},
|
|
2269
|
-
"discriminators": {
|
|
2270
|
-
"type": "array",
|
|
2271
|
-
"items": {
|
|
2272
|
-
"type": "object"
|
|
2273
|
-
}
|
|
2274
|
-
},
|
|
2275
|
-
"no_diagnostic_value": {
|
|
2276
|
-
"type": "array",
|
|
2277
|
-
"items": {
|
|
2278
|
-
"type": "object"
|
|
2279
|
-
}
|
|
2280
|
-
},
|
|
2281
|
-
"undecomposable": {
|
|
2282
|
-
"type": "array",
|
|
2283
|
-
"items": {
|
|
2284
|
-
"type": "string"
|
|
2285
|
-
}
|
|
2286
|
-
},
|
|
2287
|
-
"no_discriminator_reason": {
|
|
2288
|
-
"type": "string"
|
|
2289
|
-
},
|
|
2290
2182
|
"collection_options": {
|
|
2291
2183
|
"type": "object"
|
|
2292
2184
|
},
|
|
@@ -2728,7 +2620,7 @@ export const TOOLS = [
|
|
|
2728
2620
|
},
|
|
2729
2621
|
{
|
|
2730
2622
|
"name": "get_related_events",
|
|
2731
|
-
"description": "What else connects to one event, and what came before and after. `
|
|
2623
|
+
"description": "What else connects to one event, and what came before and after. Every `related` entry NAMES what the two share; **merely-nearby events are in `context` and claim nothing**. `insights.development` asserts sequence, never cause.",
|
|
2732
2624
|
"inputSchema": {
|
|
2733
2625
|
"type": "object",
|
|
2734
2626
|
"properties": {
|
|
@@ -2741,6 +2633,10 @@ export const TOOLS = [
|
|
|
2741
2633
|
"minimum": 1,
|
|
2742
2634
|
"maximum": 10,
|
|
2743
2635
|
"description": "Shared-name hops (default 5); 1 = direct only. Sets the charge CEILING (3 + max_hop - 1, capped 8), not the charge."
|
|
2636
|
+
},
|
|
2637
|
+
"include_hypotheses": {
|
|
2638
|
+
"type": "boolean",
|
|
2639
|
+
"description": "Ask what COULD connect the `context` events. ICD 203 word, never a number; each states what would REFUTE it. Empty is normal; omit = no model."
|
|
2744
2640
|
}
|
|
2745
2641
|
},
|
|
2746
2642
|
"required": [
|
|
@@ -2769,6 +2665,15 @@ export const TOOLS = [
|
|
|
2769
2665
|
"type": "object"
|
|
2770
2666
|
}
|
|
2771
2667
|
},
|
|
2668
|
+
"context": {
|
|
2669
|
+
"type": "array",
|
|
2670
|
+
"items": {
|
|
2671
|
+
"type": "object"
|
|
2672
|
+
}
|
|
2673
|
+
},
|
|
2674
|
+
"hypotheses": {
|
|
2675
|
+
"type": "object"
|
|
2676
|
+
},
|
|
2772
2677
|
"network": {
|
|
2773
2678
|
"type": "array",
|
|
2774
2679
|
"items": {
|
package/dist/index.js
CHANGED
|
@@ -21,7 +21,7 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
|
21
21
|
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
22
22
|
import { CallToolRequestSchema, GetPromptRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListResourceTemplatesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
23
23
|
import { PROMPTS, RESOURCES, RESOURCE_TEMPLATES, TOOLS } from './catalog.js';
|
|
24
|
-
const VERSION = '1.
|
|
24
|
+
const VERSION = '1.32.0';
|
|
25
25
|
const REMOTE_URL = new URL(process.env.OFFNADIR_DELTA_MCP_URL ?? 'https://offnadir-delta.com/api/v1/mcp');
|
|
26
26
|
/** Lazily-connected client to the hosted remote MCP server. */
|
|
27
27
|
let remote = null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "offnadir-delta-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.0",
|
|
4
4
|
"description": "Local (stdio) MCP server for Off-Nadir Delta \u2014 live, geolocated world-event intelligence, a Daily World Brief, satellite-imagery search, and an OSINT/GEOINT analyst. Forwards to the hosted server with your API key.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|