offnadir-delta-mcp 1.32.0 → 1.35.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 +110 -160
- 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
|
+
`40` tools · MCP server version `1.35.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 40 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.
|
|
@@ -102,8 +102,8 @@ What is happening, where it concentrates, and what today looks like.
|
|
|
102
102
|
| `query_developments` | What actually CHANGED about the events in an area, not which articles are new. | 3 tok |
|
|
103
103
|
| `get_event_thread` | One event end to end: state plus every change in order — the "new event or update" distinction a feed cannot make. | free |
|
|
104
104
|
| `search_entities` | Find a place in the location registry — ports, bases, airfields, power plants, chokepoints, named seas. | 1 tok |
|
|
105
|
-
| `get_entity` | What has happened at one place: the registry record plus
|
|
106
|
-
| `get_related_events` |
|
|
105
|
+
| `get_entity` | What has happened at one place: the registry record plus its most recent linked events, each with HOW it was linked. | 1 tok |
|
|
106
|
+
| `get_related_events` | The relations recorded for one event: others at the same registry facility, naming the same place, or stored as the same campaign, each saying what is shared; plus reports merged into it. | 3 tok |
|
|
107
107
|
|
|
108
108
|
### Plan
|
|
109
109
|
|
|
@@ -129,7 +129,6 @@ Turn reporting into a cited assessment you can audit afterwards.
|
|
|
129
129
|
| `ask_analyst` | Ask the Delta Analyst an OSINT/GEOINT question; returns a structured brief. | 5–123 tok |
|
|
130
130
|
| `get_analyst_job` | Status and result of an ask_analyst run. | free |
|
|
131
131
|
| `query_claims` | The ledger of claims this key was given, each with its evidence class, independent source families and publishers. | free |
|
|
132
|
-
| `refine_location` | Research one signal's location further and store a better coordinate if the sources genuinely narrow it. | 3–29 tok |
|
|
133
132
|
| `measure_index_series` | Measure a spectral index over an area scene by scene through the Sentinel-2 archive. | 0.5 tok |
|
|
134
133
|
| `detect_ships` | Count vessel-like targets in ONE Sentinel-1 SAR scene by CFAR detection — radar sees through cloud and at night. | 5 tok |
|
|
135
134
|
|
|
@@ -149,7 +148,7 @@ Stand up continuous coverage and be told only when the answer changes. Creating
|
|
|
149
148
|
| `get_watch` | One watch end to end: target, state, latest change, measurements with recent series, standing-order questions, and for an event watch its verification state, developments and thread, plus this account's notes. | free |
|
|
150
149
|
| `get_decision_package` | Everything needed to decide what to collect next about one watch, in one object. | 5 tok |
|
|
151
150
|
| `create_watch` | Add a target to the Watchlist. | free |
|
|
152
|
-
| `update_watch` | Rename, pause or
|
|
151
|
+
| `update_watch` | Rename, pause, resume or close a watch. | free |
|
|
153
152
|
| `delete_watch` | Delete a watch and its underlying resources — bound monitored areas with their history, and standing orders. | free |
|
|
154
153
|
| `add_note` | Add a note to a watch, start a thread, or reply. | free |
|
|
155
154
|
| `delete_note` | Delete one note from a watch. | free |
|
package/dist/catalog.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
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.35.0.
|
|
17
17
|
export const TOOLS = [
|
|
18
18
|
{
|
|
19
19
|
"name": "query_signals",
|
|
@@ -32,7 +32,7 @@ export const TOOLS = [
|
|
|
32
32
|
},
|
|
33
33
|
"date": {
|
|
34
34
|
"type": "string",
|
|
35
|
-
"description": "Window end date, YYYY-MM-DD (UTC). Default today."
|
|
35
|
+
"description": "Window end date, YYYY-MM-DD (UTC). Default today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
36
36
|
},
|
|
37
37
|
"days": {
|
|
38
38
|
"type": "integer",
|
|
@@ -105,55 +105,57 @@ export const TOOLS = [
|
|
|
105
105
|
"sources",
|
|
106
106
|
"geoint"
|
|
107
107
|
],
|
|
108
|
-
"description": "\"geoint\" =
|
|
108
|
+
"description": "Default \"severity\". \"geoint\" = collection relevance: satellite-visible first, then geoint_score, then stage."
|
|
109
109
|
},
|
|
110
110
|
"updatedSince": {
|
|
111
111
|
"type": "string",
|
|
112
|
-
"description": "Only signals
|
|
112
|
+
"description": "Only signals refolded at/after this ISO 8601 time. Narrows the date window rather than replacing it."
|
|
113
113
|
},
|
|
114
114
|
"createdSince": {
|
|
115
115
|
"type": "string",
|
|
116
|
-
"description": "Only signals FIRST
|
|
116
|
+
"description": "Only signals FIRST seen at/after this ISO 8601 time."
|
|
117
117
|
},
|
|
118
|
-
"
|
|
119
|
-
"type": "
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
"observable",
|
|
130
|
-
"not_observable",
|
|
131
|
-
"insufficient_detail"
|
|
132
|
-
],
|
|
133
|
-
"description": "3-state `observability`, adding `insufficient_detail`; neither bucket leaks it."
|
|
118
|
+
"stages": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"items": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"enum": [
|
|
123
|
+
"reported",
|
|
124
|
+
"localized",
|
|
125
|
+
"pinpointed"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"description": "Place precision: reported (country/province), localized (town), pinpointed (block/facility)."
|
|
134
129
|
},
|
|
135
|
-
"
|
|
136
|
-
"type": "
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
130
|
+
"sensors": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"enum": [
|
|
135
|
+
"sentinel-2",
|
|
136
|
+
"sentinel-1-sar",
|
|
137
|
+
"viirs-thermal",
|
|
138
|
+
"planet",
|
|
139
|
+
"vhr-optical",
|
|
140
|
+
"multi-sensor",
|
|
141
|
+
"none"
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
"description": "Keep only signals whose recommended sensor is one of these."
|
|
143
145
|
},
|
|
144
|
-
"
|
|
146
|
+
"minGeoint": {
|
|
145
147
|
"type": "number",
|
|
146
148
|
"minimum": 0,
|
|
147
|
-
"maximum":
|
|
148
|
-
"description": "
|
|
149
|
+
"maximum": 10,
|
|
150
|
+
"description": "geoint_score >= this (0-10) — how much a satellite look would add."
|
|
149
151
|
},
|
|
150
|
-
"
|
|
152
|
+
"plottableOnly": {
|
|
151
153
|
"type": "boolean",
|
|
152
|
-
"description": "Coordinate is
|
|
154
|
+
"description": "Coordinate is precise enough to draw as a point, and therefore to point a sensor at."
|
|
153
155
|
},
|
|
154
|
-
"
|
|
156
|
+
"observableOnly": {
|
|
155
157
|
"type": "boolean",
|
|
156
|
-
"description": "
|
|
158
|
+
"description": "A satellite could see it (effect large enough, place fine enough). Tasking: with plottableOnly."
|
|
157
159
|
},
|
|
158
160
|
"responseFormat": {
|
|
159
161
|
"type": "string",
|
|
@@ -196,7 +198,7 @@ export const TOOLS = [
|
|
|
196
198
|
},
|
|
197
199
|
{
|
|
198
200
|
"name": "query_stats",
|
|
199
|
-
"description": "Roll-ups over the corpus: totals plus per-category and per-day breakdown.
|
|
201
|
+
"description": "Roll-ups over the corpus: totals plus per-category and per-day breakdown. `total` counts the same events query_signals returns, so it matches its meta.total_count for the same query.",
|
|
200
202
|
"inputSchema": {
|
|
201
203
|
"type": "object",
|
|
202
204
|
"properties": {
|
|
@@ -211,7 +213,7 @@ export const TOOLS = [
|
|
|
211
213
|
},
|
|
212
214
|
"date": {
|
|
213
215
|
"type": "string",
|
|
214
|
-
"description": "Window end date, YYYY-MM-DD (UTC). Defaults to today."
|
|
216
|
+
"description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
215
217
|
},
|
|
216
218
|
"days": {
|
|
217
219
|
"type": "integer",
|
|
@@ -268,7 +270,7 @@ export const TOOLS = [
|
|
|
268
270
|
},
|
|
269
271
|
{
|
|
270
272
|
"name": "query_hotspots",
|
|
271
|
-
"description": "Where activity concentrates: density grid-binned into ranked cells with peak severity, categories and representative event_ids.
|
|
273
|
+
"description": "Where activity concentrates: density grid-binned into ranked cells with peak severity, categories and representative event_ids. Events too coarse to place are counted in meta.dropped_by_plottable_count, not spread over the grid.",
|
|
272
274
|
"inputSchema": {
|
|
273
275
|
"type": "object",
|
|
274
276
|
"properties": {
|
|
@@ -283,7 +285,7 @@ export const TOOLS = [
|
|
|
283
285
|
},
|
|
284
286
|
"date": {
|
|
285
287
|
"type": "string",
|
|
286
|
-
"description": "Window end date, YYYY-MM-DD (UTC). Defaults to today."
|
|
288
|
+
"description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
287
289
|
},
|
|
288
290
|
"days": {
|
|
289
291
|
"type": "integer",
|
|
@@ -320,13 +322,13 @@ export const TOOLS = [
|
|
|
320
322
|
"type": "number",
|
|
321
323
|
"minimum": 0,
|
|
322
324
|
"maximum": 10,
|
|
323
|
-
"description": "Keep only
|
|
325
|
+
"description": "Keep only events with severity_score >= this."
|
|
324
326
|
},
|
|
325
327
|
"limit": {
|
|
326
328
|
"type": "integer",
|
|
327
329
|
"minimum": 1,
|
|
328
330
|
"maximum": 500,
|
|
329
|
-
"description": "
|
|
331
|
+
"description": "Max CELLS returned, highest first. The whole window is aggregated either way; meta.total_cell_count is the uncut count. Default/max 500."
|
|
330
332
|
}
|
|
331
333
|
}
|
|
332
334
|
},
|
|
@@ -570,8 +572,8 @@ export const TOOLS = [
|
|
|
570
572
|
"type": "object",
|
|
571
573
|
"properties": {
|
|
572
574
|
"event_id": {
|
|
573
|
-
"type": "
|
|
574
|
-
"description": "The `id` from query_signals; the server resolves its point and AOI."
|
|
575
|
+
"type": "string",
|
|
576
|
+
"description": "The `id` (UUID) from query_signals; the server resolves its point and AOI."
|
|
575
577
|
},
|
|
576
578
|
"analysis_goal": {
|
|
577
579
|
"type": "string",
|
|
@@ -635,7 +637,7 @@ export const TOOLS = [
|
|
|
635
637
|
},
|
|
636
638
|
"start_date": {
|
|
637
639
|
"type": "string",
|
|
638
|
-
"description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here."
|
|
640
|
+
"description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
639
641
|
},
|
|
640
642
|
"end_date": {
|
|
641
643
|
"type": "string",
|
|
@@ -712,7 +714,7 @@ export const TOOLS = [
|
|
|
712
714
|
},
|
|
713
715
|
"start_date": {
|
|
714
716
|
"type": "string",
|
|
715
|
-
"description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here."
|
|
717
|
+
"description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
716
718
|
},
|
|
717
719
|
"end_date": {
|
|
718
720
|
"type": "string",
|
|
@@ -869,8 +871,8 @@ export const TOOLS = [
|
|
|
869
871
|
"type": "object",
|
|
870
872
|
"properties": {
|
|
871
873
|
"eventId": {
|
|
872
|
-
"type": "
|
|
873
|
-
"description": "Signal id (
|
|
874
|
+
"type": "string",
|
|
875
|
+
"description": "Signal id (UUID) from query_signals."
|
|
874
876
|
},
|
|
875
877
|
"kind": {
|
|
876
878
|
"type": "string",
|
|
@@ -911,7 +913,7 @@ export const TOOLS = [
|
|
|
911
913
|
"description": "Deterministic collection context for this signal — not model prose. Use `imagery_handoff` to go straight from the assessment to real scene candidates.",
|
|
912
914
|
"properties": {
|
|
913
915
|
"event_id": {
|
|
914
|
-
"type": "
|
|
916
|
+
"type": "string"
|
|
915
917
|
},
|
|
916
918
|
"event_date": {
|
|
917
919
|
"type": [
|
|
@@ -1117,7 +1119,7 @@ export const TOOLS = [
|
|
|
1117
1119
|
"description": "Present ONLY on a pre-charge rejection; `content` and `meta` are then absent."
|
|
1118
1120
|
},
|
|
1119
1121
|
"event_id": {
|
|
1120
|
-
"type": "
|
|
1122
|
+
"type": "string",
|
|
1121
1123
|
"description": "Echoed on a rejection so the caller can tell which signal it was."
|
|
1122
1124
|
},
|
|
1123
1125
|
"charged": {
|
|
@@ -1415,8 +1417,8 @@ export const TOOLS = [
|
|
|
1415
1417
|
"description": "Only claims a later answer restated with WEAKER evidence — read these first."
|
|
1416
1418
|
},
|
|
1417
1419
|
"event_id": {
|
|
1418
|
-
"type": "
|
|
1419
|
-
"description": "Only claims about this event
|
|
1420
|
+
"type": "string",
|
|
1421
|
+
"description": "Only claims about this event (the UUID from query_signals). `event_link.linked` says whether any resolved."
|
|
1420
1422
|
},
|
|
1421
1423
|
"limit": {
|
|
1422
1424
|
"type": "number",
|
|
@@ -1474,7 +1476,7 @@ export const TOOLS = [
|
|
|
1474
1476
|
},
|
|
1475
1477
|
"date": {
|
|
1476
1478
|
"type": "string",
|
|
1477
|
-
"description": "End of the window (YYYY-MM-DD). Defaults to today."
|
|
1479
|
+
"description": "End of the window (YYYY-MM-DD). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
|
|
1478
1480
|
},
|
|
1479
1481
|
"days": {
|
|
1480
1482
|
"type": "number",
|
|
@@ -1489,45 +1491,52 @@ export const TOOLS = [
|
|
|
1489
1491
|
},
|
|
1490
1492
|
"description": "Restrict to these signal categories."
|
|
1491
1493
|
},
|
|
1492
|
-
"
|
|
1494
|
+
"axes": {
|
|
1493
1495
|
"type": "array",
|
|
1494
1496
|
"items": {
|
|
1495
1497
|
"type": "string",
|
|
1496
1498
|
"enum": [
|
|
1497
|
-
"
|
|
1498
|
-
"baseline",
|
|
1499
|
-
"occurrence_time_established",
|
|
1500
|
-
"casualty_count_first_reported",
|
|
1501
|
-
"casualty_count_raised",
|
|
1502
|
-
"casualty_count_corrected",
|
|
1499
|
+
"attributed_actor",
|
|
1503
1500
|
"casualties_disputed",
|
|
1504
|
-
"
|
|
1505
|
-
"
|
|
1506
|
-
"
|
|
1507
|
-
"
|
|
1508
|
-
"
|
|
1509
|
-
"
|
|
1510
|
-
"
|
|
1511
|
-
"
|
|
1512
|
-
"
|
|
1513
|
-
"
|
|
1514
|
-
"
|
|
1515
|
-
"
|
|
1516
|
-
"
|
|
1517
|
-
"
|
|
1501
|
+
"casualties_injured",
|
|
1502
|
+
"casualties_killed",
|
|
1503
|
+
"distinct_hosts",
|
|
1504
|
+
"escalation_trend",
|
|
1505
|
+
"geoint_score",
|
|
1506
|
+
"imagery_post_status",
|
|
1507
|
+
"imagery_sar_pair_status",
|
|
1508
|
+
"location_level",
|
|
1509
|
+
"means_reported",
|
|
1510
|
+
"member_count",
|
|
1511
|
+
"occurred_at",
|
|
1512
|
+
"point_plottable",
|
|
1513
|
+
"quality_status",
|
|
1514
|
+
"severity_score",
|
|
1515
|
+
"stage",
|
|
1516
|
+
"target_status",
|
|
1517
|
+
"targets_named"
|
|
1518
1518
|
]
|
|
1519
1519
|
},
|
|
1520
|
-
"description": "Restrict to these
|
|
1520
|
+
"description": "Restrict to these axes. An unknown value errors rather than returning nothing."
|
|
1521
1521
|
},
|
|
1522
1522
|
"notable_only": {
|
|
1523
1523
|
"type": "boolean",
|
|
1524
1524
|
"description": "Default true. False returns every recorded change."
|
|
1525
1525
|
},
|
|
1526
|
+
"include_member_count": {
|
|
1527
|
+
"type": "boolean",
|
|
1528
|
+
"description": "Default false. \"One more report arrived\" is not news about the event."
|
|
1529
|
+
},
|
|
1526
1530
|
"limit": {
|
|
1527
1531
|
"type": "number",
|
|
1528
1532
|
"minimum": 1,
|
|
1529
1533
|
"maximum": 200,
|
|
1530
1534
|
"description": "How many developments to return (default 50)."
|
|
1535
|
+
},
|
|
1536
|
+
"offset": {
|
|
1537
|
+
"type": "number",
|
|
1538
|
+
"minimum": 0,
|
|
1539
|
+
"description": "Skip this many; meta.total_count is the window."
|
|
1531
1540
|
}
|
|
1532
1541
|
},
|
|
1533
1542
|
"required": []
|
|
@@ -1567,8 +1576,8 @@ export const TOOLS = [
|
|
|
1567
1576
|
"type": "object",
|
|
1568
1577
|
"properties": {
|
|
1569
1578
|
"event_id": {
|
|
1570
|
-
"type": "
|
|
1571
|
-
"description": "
|
|
1579
|
+
"type": "string",
|
|
1580
|
+
"description": "Event id (UUID). A folded id resolves to its event; merged_from_request says so."
|
|
1572
1581
|
}
|
|
1573
1582
|
},
|
|
1574
1583
|
"required": [
|
|
@@ -2294,7 +2303,7 @@ export const TOOLS = [
|
|
|
2294
2303
|
},
|
|
2295
2304
|
{
|
|
2296
2305
|
"name": "update_watch",
|
|
2297
|
-
"description": "Rename, pause or
|
|
2306
|
+
"description": "Rename, pause, resume or close a watch. **Pausing is not a display state**: monitored areas stop being measured and charged, standing orders stop checking. **Closing states how the question ended** and requires close_reason.",
|
|
2298
2307
|
"inputSchema": {
|
|
2299
2308
|
"type": "object",
|
|
2300
2309
|
"properties": {
|
|
@@ -2311,9 +2320,19 @@ export const TOOLS = [
|
|
|
2311
2320
|
"enum": [
|
|
2312
2321
|
"active",
|
|
2313
2322
|
"paused",
|
|
2314
|
-
"saved"
|
|
2323
|
+
"saved",
|
|
2324
|
+
"closed"
|
|
2315
2325
|
],
|
|
2316
|
-
"description": "\"paused\" stops the bound checks; \"active\" resumes them."
|
|
2326
|
+
"description": "\"paused\" stops the bound checks; \"active\" resumes them; \"closed\" ends the question and needs close_reason."
|
|
2327
|
+
},
|
|
2328
|
+
"close_reason": {
|
|
2329
|
+
"type": "string",
|
|
2330
|
+
"enum": [
|
|
2331
|
+
"resolved",
|
|
2332
|
+
"lapsed",
|
|
2333
|
+
"false_alarm"
|
|
2334
|
+
],
|
|
2335
|
+
"description": "Required when status is \"closed\". resolved = an answer was reached; lapsed = interest moved on without an answer; false_alarm = never a watchable event. They point at different things to fix, so do not collapse them."
|
|
2317
2336
|
},
|
|
2318
2337
|
"notify_email": {
|
|
2319
2338
|
"type": "boolean",
|
|
@@ -2566,7 +2585,7 @@ export const TOOLS = [
|
|
|
2566
2585
|
},
|
|
2567
2586
|
{
|
|
2568
2587
|
"name": "get_entity",
|
|
2569
|
-
"description": "What has happened at one place: the registry record plus
|
|
2588
|
+
"description": "What has happened at one place: the registry record plus its most recent linked events, each with HOW it was linked. **`link_kind: proximity` is an association, not a statement that the event happened there.**",
|
|
2570
2589
|
"inputSchema": {
|
|
2571
2590
|
"type": "object",
|
|
2572
2591
|
"properties": {
|
|
@@ -2595,17 +2614,14 @@ export const TOOLS = [
|
|
|
2595
2614
|
"type": "object"
|
|
2596
2615
|
}
|
|
2597
2616
|
},
|
|
2598
|
-
"link_basis_counts": {
|
|
2599
|
-
"type": "object"
|
|
2600
|
-
},
|
|
2601
2617
|
"event_count": {
|
|
2602
2618
|
"type": "number"
|
|
2603
2619
|
},
|
|
2604
|
-
"
|
|
2620
|
+
"events_24h": {
|
|
2605
2621
|
"type": "number"
|
|
2606
2622
|
},
|
|
2607
|
-
"
|
|
2608
|
-
"type": "
|
|
2623
|
+
"claim_count": {
|
|
2624
|
+
"type": "number"
|
|
2609
2625
|
}
|
|
2610
2626
|
},
|
|
2611
2627
|
"required": [
|
|
@@ -2620,23 +2636,13 @@ export const TOOLS = [
|
|
|
2620
2636
|
},
|
|
2621
2637
|
{
|
|
2622
2638
|
"name": "get_related_events",
|
|
2623
|
-
"description": "
|
|
2639
|
+
"description": "The relations recorded for one event: others at the same registry facility, naming the same place, or stored as the same campaign, each saying what is shared; plus reports merged into it. Merely-nearby events are not relations and are not returned.",
|
|
2624
2640
|
"inputSchema": {
|
|
2625
2641
|
"type": "object",
|
|
2626
2642
|
"properties": {
|
|
2627
2643
|
"event_id": {
|
|
2628
|
-
"type": "
|
|
2629
|
-
"description": "The
|
|
2630
|
-
},
|
|
2631
|
-
"max_hop": {
|
|
2632
|
-
"type": "number",
|
|
2633
|
-
"minimum": 1,
|
|
2634
|
-
"maximum": 10,
|
|
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."
|
|
2644
|
+
"type": "string",
|
|
2645
|
+
"description": "The event id (a UUID) from query_signals."
|
|
2640
2646
|
}
|
|
2641
2647
|
},
|
|
2642
2648
|
"required": [
|
|
@@ -2653,51 +2659,32 @@ export const TOOLS = [
|
|
|
2653
2659
|
"anchor": {
|
|
2654
2660
|
"type": "object"
|
|
2655
2661
|
},
|
|
2656
|
-
"
|
|
2657
|
-
"type": "array",
|
|
2658
|
-
"items": {
|
|
2659
|
-
"type": "object"
|
|
2660
|
-
}
|
|
2661
|
-
},
|
|
2662
|
-
"related": {
|
|
2662
|
+
"facilities": {
|
|
2663
2663
|
"type": "array",
|
|
2664
2664
|
"items": {
|
|
2665
2665
|
"type": "object"
|
|
2666
2666
|
}
|
|
2667
2667
|
},
|
|
2668
|
-
"
|
|
2668
|
+
"places": {
|
|
2669
2669
|
"type": "array",
|
|
2670
2670
|
"items": {
|
|
2671
2671
|
"type": "object"
|
|
2672
2672
|
}
|
|
2673
2673
|
},
|
|
2674
|
-
"
|
|
2675
|
-
"type": "object"
|
|
2676
|
-
},
|
|
2677
|
-
"network": {
|
|
2674
|
+
"related": {
|
|
2678
2675
|
"type": "array",
|
|
2679
2676
|
"items": {
|
|
2680
2677
|
"type": "object"
|
|
2681
2678
|
}
|
|
2682
2679
|
},
|
|
2683
|
-
"
|
|
2680
|
+
"merged_in": {
|
|
2684
2681
|
"type": "array",
|
|
2685
2682
|
"items": {
|
|
2686
2683
|
"type": "object"
|
|
2687
2684
|
}
|
|
2688
2685
|
},
|
|
2689
|
-
"assessment": {
|
|
2690
|
-
"type": "object"
|
|
2691
|
-
},
|
|
2692
|
-
"insights": {
|
|
2693
|
-
"type": "object"
|
|
2694
|
-
},
|
|
2695
2686
|
"accounting": {
|
|
2696
2687
|
"type": "object"
|
|
2697
|
-
},
|
|
2698
|
-
"meta": {
|
|
2699
|
-
"type": "object",
|
|
2700
|
-
"description": "Query echo, token charge/balance (meta.tokens), and pagination where applicable."
|
|
2701
2688
|
}
|
|
2702
2689
|
},
|
|
2703
2690
|
"required": [
|
|
@@ -2870,43 +2857,6 @@ export const TOOLS = [
|
|
|
2870
2857
|
"destructiveHint": false
|
|
2871
2858
|
}
|
|
2872
2859
|
},
|
|
2873
|
-
{
|
|
2874
|
-
"name": "refine_location",
|
|
2875
|
-
"description": "Research one signal's location further and store a better coordinate if the sources genuinely narrow it. **Charged only if the precision improves.** `improved: false` is the common CORRECT outcome, not worth retrying.",
|
|
2876
|
-
"inputSchema": {
|
|
2877
|
-
"type": "object",
|
|
2878
|
-
"required": [
|
|
2879
|
-
"signal_id"
|
|
2880
|
-
],
|
|
2881
|
-
"properties": {
|
|
2882
|
-
"signal_id": {
|
|
2883
|
-
"type": "integer",
|
|
2884
|
-
"description": "The signal (global_event_id) to research further."
|
|
2885
|
-
}
|
|
2886
|
-
}
|
|
2887
|
-
},
|
|
2888
|
-
"outputSchema": {
|
|
2889
|
-
"type": "object",
|
|
2890
|
-
"properties": {
|
|
2891
|
-
"summary": {
|
|
2892
|
-
"type": "string",
|
|
2893
|
-
"description": "One-line natural-language summary of the result, ready to relay to a user."
|
|
2894
|
-
},
|
|
2895
|
-
"result": {
|
|
2896
|
-
"type": "object"
|
|
2897
|
-
},
|
|
2898
|
-
"meta": {
|
|
2899
|
-
"type": "object",
|
|
2900
|
-
"description": "Query echo, token charge/balance (meta.tokens), and pagination where applicable."
|
|
2901
|
-
}
|
|
2902
|
-
}
|
|
2903
|
-
},
|
|
2904
|
-
"annotations": {
|
|
2905
|
-
"readOnlyHint": false,
|
|
2906
|
-
"openWorldHint": false,
|
|
2907
|
-
"destructiveHint": true
|
|
2908
|
-
}
|
|
2909
|
-
},
|
|
2910
2860
|
{
|
|
2911
2861
|
"name": "measure_index_series",
|
|
2912
2862
|
"description": "Measure a spectral index over an area scene by scene through the Sentinel-2 archive. **Call `estimate_only: true` first** — free, and returns the scene count, real date span and cost. At most 24 scenes, so a longer period is a SAMPLE. Cite the `attribution`.",
|
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.35.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.35.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": {
|