offnadir-delta-mcp 1.3.10 → 1.3.12
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/dist/catalog.js +13 -5
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/catalog.js
CHANGED
|
@@ -81,7 +81,8 @@ export const TOOLS = [
|
|
|
81
81
|
observabilityStatus: { type: 'string', enum: ['observable', 'not_observable', 'insufficient_detail'], description: '3-state observability filter. Unlike `observability` (binary), this exposes `insufficient_detail` — signals where imageability is unknown (no RS enrichment yet, unresolved location, or an Impossible verdict rescued because the event reads kinetic). `not_observable` = a considered "nothing to image"; neither bucket leaks insufficient_detail.' },
|
|
82
82
|
openData: { type: 'string', enum: ['sufficient', 'commercial-recommended', 'not-applicable'], description: 'Keep only signals with this open-data sufficiency — free imagery is enough vs commercial tasking recommended (intelligence.open_data_sufficiency).' },
|
|
83
83
|
minInformationGain: { type: 'number', minimum: 0, maximum: 1, description: 'Keep only signals whose intelligence.expected_information_gain >= this (0-1).' },
|
|
84
|
-
taskableOnly: { type: 'boolean', description: 'Keep only signals whose coordinate is search_ready
|
|
84
|
+
taskableOnly: { type: 'boolean', description: 'Keep only signals whose coordinate is search_ready — GEO-READY ONLY: drops country centroids, ADM1 mismatches, reporting-dateline fallbacks and unresolved fixes (intelligence.geo_validation.search_ready). It does NOT imply observable or quality-passed, so not-observable / insufficient-detail / quality-failed signals can still appear. For automated imagery tasking use collectionReadyOnly (or combine with observability:"observable").' },
|
|
85
|
+
collectionReadyOnly: { type: 'boolean', description: 'STRICT tasking-candidate filter: search_ready AND observability=observable AND quality.status!=failed AND a concrete collection plan (rs_target + rs_reason present) AND an event coordinate. The safe input set for automated imagery tasking — a superset of every gate taskableOnly alone does not check.' },
|
|
85
86
|
responseFormat: { type: 'string', enum: ['concise', 'detailed'], description: 'Per-signal field detail. "concise" (default) returns key decision + GEOINT fields (incl. collection_priority, the corrected 0-100 ranking value); "detailed" returns the full Signal object.' },
|
|
86
87
|
},
|
|
87
88
|
},
|
|
@@ -154,8 +155,12 @@ export const TOOLS = [
|
|
|
154
155
|
description: 'Search the satellite imagery catalog (Sentinel-1/2, OPERA RTC-S1) for scenes over an area and ' +
|
|
155
156
|
'date window — the natural follow-up to a signal (find imagery over the event location). Returns ' +
|
|
156
157
|
'scene metadata (id, datetime, footprint, cloud cover, platform, orbit geometry, coverage, catalog ' +
|
|
157
|
-
'link) — no imagery bytes. Pass eventDate to classify each scene pre/post/
|
|
158
|
-
'
|
|
158
|
+
'link) — no imagery bytes. Pass eventDate to classify each scene timing=pre/post/same_day_unknown ' +
|
|
159
|
+
'(a same-day scene is same_day_unknown, never post, without a real event time) and get pre/post ' +
|
|
160
|
+
'bracketing + window_status + SAR sar_pair_status in meta. Pass eventPoint [lon,lat] and/or eventAoi ' +
|
|
161
|
+
'[minLon,minLat,maxLon,maxLat] to get each scene\'s target_relation (covers_event_point / ' +
|
|
162
|
+
'intersects_event_aoi / usable_for_event) — so a scene that only clips the wide bbox is not mistaken ' +
|
|
163
|
+
'for covering the event. Costs 2 token(s) per call.',
|
|
159
164
|
inputSchema: {
|
|
160
165
|
type: 'object',
|
|
161
166
|
properties: {
|
|
@@ -163,10 +168,13 @@ export const TOOLS = [
|
|
|
163
168
|
collection: { type: 'string', enum: [...IMAGERY_COLLECTIONS], description: 'Catalog collection. Defaults to sentinel-2-l2a.' },
|
|
164
169
|
date: { type: 'string', description: 'Window end date, YYYY-MM-DD (UTC). Defaults to today.' },
|
|
165
170
|
days: { type: 'integer', minimum: 1, maximum: SIGNALS_MAX_DAYS, description: 'Window length in days. Defaults to 7.' },
|
|
166
|
-
eventDate: { type: 'string', description: 'Event date, YYYY-MM-DD (UTC). When set, each scene is tagged timing=pre/post/
|
|
171
|
+
eventDate: { type: 'string', description: 'Event date, YYYY-MM-DD (UTC). When set, each scene is tagged timing=pre/post/same_day_unknown and the search window is widened to the canonical pre/post span, so meta reports has_pre_baseline / has_post / bracketing_available / window_status; for sentinel-1-grd it also reports sar_pair_status (ready | not_ready | indeterminate_event_time) + orbit_note.' },
|
|
172
|
+
eventPoint: { type: 'array', items: { type: 'number' }, minItems: 2, maxItems: 2, description: 'Event point [lon, lat] (WGS84). When set, each scene reports target_relation.covers_event_point / usable_for_event so a scene that only clips the wide bbox is not presented as covering the event.' },
|
|
173
|
+
eventAoi: { type: 'array', items: { type: 'number' }, minItems: 4, maxItems: 4, description: 'Event AOI bbox [minLon, minLat, maxLon, maxLat] (WGS84). Drives target_relation.intersects_event_aoi / event_aoi_coverage_ratio.' },
|
|
174
|
+
eventTimestamp: { type: 'string', description: 'Full event timestamp (ISO 8601) when known — promotes same-day scenes from same_day_unknown to pre/post by time.' },
|
|
167
175
|
cloudCoverMax: { type: 'number', minimum: 0, maximum: 100, description: 'Sentinel-2 only: max cloud cover %.' },
|
|
168
176
|
limit: { type: 'integer', minimum: 1, maximum: 100, description: 'Max scenes to return. Defaults to 25.' },
|
|
169
|
-
responseFormat: { type: 'string', enum: ['concise', 'detailed'], description: 'Per-scene field detail. "concise" (default) returns id, collection, datetime, timing, cloud_cover, platform, orbit_state, relative_orbit, instrument_mode, product_type, coverage_ratio, stac_item_url, preview. "detailed" adds footprint bbox/geometry, constellation, polarizations, absolute_orbit, incidence_angle, and non-signed asset hrefs.' },
|
|
177
|
+
responseFormat: { type: 'string', enum: ['concise', 'detailed'], description: 'Per-scene field detail. "concise" (default) returns id, collection, datetime, timing, cloud_cover, platform, orbit_state, relative_orbit, instrument_mode, product_type, coverage_ratio, covers_event_point, usable_for_event, stac_item_url, preview. "detailed" adds the full footprint bbox/geometry, the complete target_relation, constellation, polarizations, absolute_orbit, incidence_angle, and non-signed asset hrefs.' },
|
|
170
178
|
},
|
|
171
179
|
required: ['bbox'],
|
|
172
180
|
},
|
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.3.
|
|
24
|
+
const VERSION = '1.3.12';
|
|
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.
|
|
3
|
+
"version": "1.3.12",
|
|
4
4
|
"description": "Local (stdio) MCP server for Off-Nadir Delta — 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": {
|