offnadir-delta-mcp 1.29.0 → 1.31.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
- `42` tools · MCP server version `1.29.0` · [full reference](https://offnadir-delta.com/docs/mcp)
19
+ `42` tools · MCP server version `1.31.0` · [full reference](https://offnadir-delta.com/docs/mcp)
20
20
 
21
21
  ## What it does
22
22
 
@@ -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 (geopolitical, security, disaster, infrastructure) from global news media, AI-enriched with severity/GEOINT scores and collection recommendations. | 3 tok |
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,11 +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 (Sentinel-1, Sentinel-2, NISAR L-band) over an area and window. | 2 tok |
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: SGP4 over day-cached elements for 13 free-systematic and commercial-taskable families. | 2 tok |
118
+ | `predict_satellite_passes` | WHEN a place can next be imaged and by WHAT: 13 free-systematic and commercial-taskable families. | 2 tok |
119
119
  | `test_hypotheses` | Given competing statements, the observation that would REFUTE the most — and those that would refute none. | 3 tok |
120
120
  | `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
121
  | `analyze_terrain` | Compute FROM the terrain. | free |
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.29.0.
16
+ // Generated for Off-Nadir Delta MCP 1.31.0.
17
17
  export const TOOLS = [
18
18
  {
19
19
  "name": "query_signals",
20
- "description": "Geolocated world events (geopolitical, security, disaster, infrastructure) from global news media, AI-enriched with severity/GEOINT scores and collection recommendations.",
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 (Sentinel-1, Sentinel-2, NISAR L-band) 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.",
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: SGP4 over day-cached elements for 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\".",
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": {
@@ -2179,11 +2179,11 @@ export const TOOLS = [
2179
2179
  "properties": {
2180
2180
  "watch_id": {
2181
2181
  "type": "string",
2182
- "description": "The id from list_watches or create_watch."
2182
+ "description": "Id from list_watches."
2183
2183
  },
2184
2184
  "include_passes": {
2185
2185
  "type": "boolean",
2186
- "description": "Add the collection outlook. Costs the same as predict_satellite_passes — it is the same answer; omit it and the call is free."
2186
+ "description": "Add the collection outlook. Costs the same as predict_satellite_passes; omit it and the call is free."
2187
2187
  }
2188
2188
  },
2189
2189
  "required": [
@@ -2222,7 +2222,7 @@ export const TOOLS = [
2222
2222
  "properties": {
2223
2223
  "watch_id": {
2224
2224
  "type": "string",
2225
- "description": "The id from list_watches or create_watch."
2225
+ "description": "Id from list_watches."
2226
2226
  }
2227
2227
  },
2228
2228
  "required": [
@@ -2344,7 +2344,7 @@ export const TOOLS = [
2344
2344
  "event",
2345
2345
  "area"
2346
2346
  ],
2347
- "description": "What kind of target to watch."
2347
+ "description": "Kind of target."
2348
2348
  },
2349
2349
  "event_id": {
2350
2350
  "type": "number",
@@ -2361,11 +2361,15 @@ export const TOOLS = [
2361
2361
  },
2362
2362
  "name": {
2363
2363
  "type": "string",
2364
- "description": "Label for the watch (defaults from the target)."
2364
+ "description": "Label (defaults from the target)."
2365
2365
  },
2366
2366
  "notify_email": {
2367
2367
  "type": "boolean",
2368
2368
  "description": "Email on meaningful changes (default false)."
2369
+ },
2370
+ "imagery_alerts": {
2371
+ "type": "boolean",
2372
+ "description": "AREA only: tell me when a new scene covers it."
2369
2373
  }
2370
2374
  },
2371
2375
  "required": [
@@ -2404,11 +2408,11 @@ export const TOOLS = [
2404
2408
  "properties": {
2405
2409
  "watch_id": {
2406
2410
  "type": "string",
2407
- "description": "The id from list_watches or create_watch."
2411
+ "description": "Id from list_watches."
2408
2412
  },
2409
2413
  "name": {
2410
2414
  "type": "string",
2411
- "description": "New label for the watch."
2415
+ "description": "New label."
2412
2416
  },
2413
2417
  "status": {
2414
2418
  "type": "string",
@@ -2421,7 +2425,11 @@ export const TOOLS = [
2421
2425
  },
2422
2426
  "notify_email": {
2423
2427
  "type": "boolean",
2424
- "description": "Email on meaningful changes."
2428
+ "description": "Email on changes."
2429
+ },
2430
+ "imagery_alerts": {
2431
+ "type": "boolean",
2432
+ "description": "AREA only: tell me when a new scene covers it."
2425
2433
  }
2426
2434
  },
2427
2435
  "required": [
@@ -2454,7 +2462,7 @@ export const TOOLS = [
2454
2462
  "properties": {
2455
2463
  "watch_id": {
2456
2464
  "type": "string",
2457
- "description": "The id from list_watches or create_watch."
2465
+ "description": "Id from list_watches."
2458
2466
  }
2459
2467
  },
2460
2468
  "required": [
@@ -2491,7 +2499,7 @@ export const TOOLS = [
2491
2499
  "properties": {
2492
2500
  "watch_id": {
2493
2501
  "type": "string",
2494
- "description": "The id from list_watches or create_watch."
2502
+ "description": "Id from list_watches."
2495
2503
  },
2496
2504
  "note": {
2497
2505
  "type": "string",
@@ -2535,7 +2543,7 @@ export const TOOLS = [
2535
2543
  },
2536
2544
  "next_check": {
2537
2545
  "type": "string",
2538
- "description": "When or what to look at next."
2546
+ "description": "When/what to look at next."
2539
2547
  }
2540
2548
  },
2541
2549
  "required": [
@@ -2572,11 +2580,11 @@ export const TOOLS = [
2572
2580
  "properties": {
2573
2581
  "watch_id": {
2574
2582
  "type": "string",
2575
- "description": "The id from list_watches or create_watch."
2583
+ "description": "Id from list_watches."
2576
2584
  },
2577
2585
  "note_id": {
2578
2586
  "type": "string",
2579
- "description": "The note id from get_watch or add_note."
2587
+ "description": "Note id from get_watch."
2580
2588
  }
2581
2589
  },
2582
2590
  "required": [
@@ -2720,7 +2728,7 @@ export const TOOLS = [
2720
2728
  },
2721
2729
  {
2722
2730
  "name": "get_related_events",
2723
- "description": "What else connects to one event, and what came before and after. `shared_entity` names the connecting place; `nearby` is **close in space and time only, NOT a claim of connection**. `insights.development` asserts sequence, never cause.",
2731
+ "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.",
2724
2732
  "inputSchema": {
2725
2733
  "type": "object",
2726
2734
  "properties": {
@@ -2733,6 +2741,10 @@ export const TOOLS = [
2733
2741
  "minimum": 1,
2734
2742
  "maximum": 10,
2735
2743
  "description": "Shared-name hops (default 5); 1 = direct only. Sets the charge CEILING (3 + max_hop - 1, capped 8), not the charge."
2744
+ },
2745
+ "include_hypotheses": {
2746
+ "type": "boolean",
2747
+ "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."
2736
2748
  }
2737
2749
  },
2738
2750
  "required": [
@@ -2761,6 +2773,15 @@ export const TOOLS = [
2761
2773
  "type": "object"
2762
2774
  }
2763
2775
  },
2776
+ "context": {
2777
+ "type": "array",
2778
+ "items": {
2779
+ "type": "object"
2780
+ }
2781
+ },
2782
+ "hypotheses": {
2783
+ "type": "object"
2784
+ },
2764
2785
  "network": {
2765
2786
  "type": "array",
2766
2787
  "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.29.0';
24
+ const VERSION = '1.31.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.29.0",
3
+ "version": "1.31.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": {