offnadir-delta-mcp 1.36.0 → 1.37.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 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
- `40` tools · MCP server version `1.36.0` · [full reference](https://offnadir-delta.com/docs/mcp)
19
+ `40` tools · MCP server version `1.37.0` · [full reference](https://offnadir-delta.com/docs/mcp)
20
20
 
21
21
  ## What it does
22
22
 
@@ -98,7 +98,7 @@ What is happening, where it concentrates, and what today looks like.
98
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
- | `get_world_brief` | The Daily World Brief — an AI digest of the previous UTC day. | free |
101
+ | `get_world_brief` | AI world brief: daily (prior UTC day, all plans) or weekly/monthly by plan. | free |
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 |
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.36.0.
16
+ // Generated for Off-Nadir Delta MCP 1.37.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. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
35
+ "description": "Window end date, YYYY-MM-DD (UTC). Default today. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
36
36
  },
37
37
  "days": {
38
38
  "type": "integer",
@@ -75,7 +75,7 @@ export const TOOLS = [
75
75
  "equities"
76
76
  ]
77
77
  },
78
- "description": "Markets AI-tagged as exposed through a direct physical/supply channel."
78
+ "description": "Markets exposed via a physical/supply channel."
79
79
  },
80
80
  "limit": {
81
81
  "type": "integer",
@@ -93,6 +93,12 @@ export const TOOLS = [
93
93
  "maximum": 10,
94
94
  "description": "severity_score >= this (0-10)."
95
95
  },
96
+ "minSeverityBand": {
97
+ "type": "integer",
98
+ "minimum": 1,
99
+ "maximum": 10,
100
+ "description": "severity_band >= this."
101
+ },
96
102
  "escalating": {
97
103
  "type": "boolean",
98
104
  "description": "escalation_trend is \"escalating\"."
@@ -105,15 +111,15 @@ export const TOOLS = [
105
111
  "sources",
106
112
  "geoint"
107
113
  ],
108
- "description": "Default \"severity\". \"geoint\" = collection relevance: satellite-visible first, then geoint_score, then stage."
114
+ "description": "Default \"severity\". \"geoint\": visible first, then geoint_score, stage."
109
115
  },
110
116
  "updatedSince": {
111
117
  "type": "string",
112
- "description": "Only signals refolded at/after this ISO 8601 time. Narrows the date window rather than replacing it."
118
+ "description": "Refolded at/after (ISO); narrows the window."
113
119
  },
114
120
  "createdSince": {
115
121
  "type": "string",
116
- "description": "Only signals FIRST seen at/after this ISO 8601 time."
122
+ "description": "FIRST seen at/after (ISO)."
117
123
  },
118
124
  "stages": {
119
125
  "type": "array",
@@ -125,7 +131,7 @@ export const TOOLS = [
125
131
  "pinpointed"
126
132
  ]
127
133
  },
128
- "description": "Place precision: reported (country/province), localized (town), pinpointed (block/facility)."
134
+ "description": "reported=country/province, localized=town, pinpointed=block/facility."
129
135
  },
130
136
  "sensors": {
131
137
  "type": "array",
@@ -141,21 +147,38 @@ export const TOOLS = [
141
147
  "none"
142
148
  ]
143
149
  },
144
- "description": "Keep only signals whose recommended sensor is one of these."
150
+ "description": "Recommended sensor is one of these."
145
151
  },
146
152
  "minGeoint": {
147
153
  "type": "number",
148
154
  "minimum": 0,
149
155
  "maximum": 10,
150
- "description": "geoint_score >= this (0-10) — how much a satellite look would add."
156
+ "description": "geoint_score >= this (0-10)."
151
157
  },
152
158
  "plottableOnly": {
153
159
  "type": "boolean",
154
- "description": "Coordinate is precise enough to draw as a point, and therefore to point a sensor at."
160
+ "description": "Precise enough to be a point."
155
161
  },
156
162
  "observableOnly": {
157
163
  "type": "boolean",
158
- "description": "A satellite could see it (effect large enough, place fine enough). Tasking: with plottableOnly."
164
+ "description": "A satellite could see it."
165
+ },
166
+ "q": {
167
+ "type": "string",
168
+ "description": "Text search: all words; \"phrase\"; -exclude."
169
+ },
170
+ "reportedSince": {
171
+ "type": "string",
172
+ "description": "Last reported at/after (ISO)."
173
+ },
174
+ "minPublishers": {
175
+ "type": "integer",
176
+ "minimum": 1,
177
+ "description": "At least this many publishers."
178
+ },
179
+ "unplottableOnly": {
180
+ "type": "boolean",
181
+ "description": "Only events that cannot be a point."
159
182
  },
160
183
  "responseFormat": {
161
184
  "type": "string",
@@ -163,7 +186,7 @@ export const TOOLS = [
163
186
  "concise",
164
187
  "detailed"
165
188
  ],
166
- "description": "\"detailed\" returns the full Signal (see signals://schema)."
189
+ "description": "\"detailed\": full Signal (signals://schema)."
167
190
  }
168
191
  }
169
192
  },
@@ -213,7 +236,7 @@ export const TOOLS = [
213
236
  },
214
237
  "date": {
215
238
  "type": "string",
216
- "description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
239
+ "description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
217
240
  },
218
241
  "days": {
219
242
  "type": "integer",
@@ -285,7 +308,7 @@ export const TOOLS = [
285
308
  },
286
309
  "date": {
287
310
  "type": "string",
288
- "description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
311
+ "description": "Window end date, YYYY-MM-DD (UTC). Defaults to today. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
289
312
  },
290
313
  "days": {
291
314
  "type": "integer",
@@ -328,7 +351,7 @@ export const TOOLS = [
328
351
  "type": "integer",
329
352
  "minimum": 1,
330
353
  "maximum": 500,
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."
354
+ "description": "Max CELLS, highest first; the whole window is aggregated either way (meta.total_cell_count). Default/max 500."
332
355
  }
333
356
  }
334
357
  },
@@ -363,13 +386,21 @@ export const TOOLS = [
363
386
  },
364
387
  {
365
388
  "name": "get_world_brief",
366
- "description": "The Daily World Brief — an AI digest of the previous UTC day. freshness.is_stale means no newer day is available yet, so relay it as possibly out of date.",
389
+ "description": "AI world brief: daily (prior UTC day, all plans) or weekly/monthly by plan. freshness.is_stale: no newer day, so relay as stale.",
367
390
  "inputSchema": {
368
391
  "type": "object",
369
392
  "properties": {
393
+ "period": {
394
+ "type": "string",
395
+ "enum": [
396
+ "daily",
397
+ "weekly",
398
+ "monthly"
399
+ ]
400
+ },
370
401
  "date": {
371
402
  "type": "string",
372
- "description": "YYYY-MM-DD (UTC). Default latest available."
403
+ "description": "YYYY-MM-DD UTC; weekly/monthly: last day. Default latest"
373
404
  }
374
405
  }
375
406
  },
@@ -487,7 +518,7 @@ export const TOOLS = [
487
518
  },
488
519
  "eventDate": {
489
520
  "type": "string",
490
- "description": "Widens the window to the canonical pre/post span and adds bracketing; sentinel-1-grd also gets sar_pair_status."
521
+ "description": "Widens to the canonical pre/post span with bracketing; sentinel-1-grd adds sar_pair_status."
491
522
  },
492
523
  "eventPoint": {
493
524
  "type": "array",
@@ -521,7 +552,7 @@ export const TOOLS = [
521
552
  "type": "integer",
522
553
  "minimum": 1,
523
554
  "maximum": 100,
524
- "description": "Max scenes to return. Defaults to 25."
555
+ "description": "Max scenes. Default 25."
525
556
  },
526
557
  "responseFormat": {
527
558
  "type": "string",
@@ -529,7 +560,7 @@ export const TOOLS = [
529
560
  "concise",
530
561
  "detailed"
531
562
  ],
532
- "description": "\"detailed\" adds footprint geometry, full target_relation, polarizations, orbit numbers, incidence."
563
+ "description": "\"detailed\" adds footprint geometry, full target_relation and SAR metadata."
533
564
  }
534
565
  },
535
566
  "required": [
@@ -637,7 +668,7 @@ export const TOOLS = [
637
668
  },
638
669
  "start_date": {
639
670
  "type": "string",
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."
671
+ "description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
641
672
  },
642
673
  "end_date": {
643
674
  "type": "string",
@@ -714,7 +745,7 @@ export const TOOLS = [
714
745
  },
715
746
  "start_date": {
716
747
  "type": "string",
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."
748
+ "description": "YYYY-MM-DD, inclusive. Default today; no plan history floor here. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
718
749
  },
719
750
  "end_date": {
720
751
  "type": "string",
@@ -1461,7 +1492,7 @@ export const TOOLS = [
1461
1492
  },
1462
1493
  {
1463
1494
  "name": "query_developments",
1464
- "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).",
1495
+ "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). Plan-dependent values say so (`locked_by`).",
1465
1496
  "inputSchema": {
1466
1497
  "type": "object",
1467
1498
  "properties": {
@@ -1476,7 +1507,7 @@ export const TOOLS = [
1476
1507
  },
1477
1508
  "date": {
1478
1509
  "type": "string",
1479
- "description": "End of the window (YYYY-MM-DD). Defaults to today. Records start 2026-09-23; before that, empty means unrecorded, not quiet."
1510
+ "description": "End of the window (YYYY-MM-DD). Defaults to today. Records start 2026-09-23 (earlier: unrecorded, not quiet). Plan-bounded: meta.window_clamp."
1480
1511
  },
1481
1512
  "days": {
1482
1513
  "type": "number",
@@ -1513,6 +1544,7 @@ export const TOOLS = [
1513
1544
  "quality_status",
1514
1545
  "severity_score",
1515
1546
  "stage",
1547
+ "target_effect",
1516
1548
  "target_status",
1517
1549
  "targets_named"
1518
1550
  ]
@@ -1531,7 +1563,7 @@ export const TOOLS = [
1531
1563
  "type": "number",
1532
1564
  "minimum": 1,
1533
1565
  "maximum": 200,
1534
- "description": "How many developments to return (default 50)."
1566
+ "description": "Developments to return (default 50)."
1535
1567
  },
1536
1568
  "offset": {
1537
1569
  "type": "number",
@@ -1571,7 +1603,7 @@ export const TOOLS = [
1571
1603
  },
1572
1604
  {
1573
1605
  "name": "get_event_thread",
1574
- "description": "One event end to end: state plus every change in order — the \"new event or update\" distinction a feed cannot make. `occurred_at_basis` distinguishes stated, absent and never measured.",
1606
+ "description": "One event end to end: state plus every change in order — the \"new event or update\" distinction a feed cannot make. `occurred_at_basis` distinguishes stated, absent and never measured. Plan-dependent: see `locked_by`, `plan_lock`.",
1575
1607
  "inputSchema": {
1576
1608
  "type": "object",
1577
1609
  "properties": {
@@ -2636,7 +2668,7 @@ export const TOOLS = [
2636
2668
  },
2637
2669
  {
2638
2670
  "name": "get_related_events",
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.",
2671
+ "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. Plan-dependent: see `plan_lock`.",
2640
2672
  "inputSchema": {
2641
2673
  "type": "object",
2642
2674
  "properties": {
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.36.0';
24
+ const VERSION = '1.37.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.36.0",
3
+ "version": "1.37.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": {