offnadir-delta-mcp 1.3.8 → 1.3.9
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 +18 -6
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/catalog.js
CHANGED
|
@@ -80,6 +80,7 @@ export const TOOLS = [
|
|
|
80
80
|
observability: { type: 'string', enum: ['observable', 'not-observable'], description: 'Keep only signals with this satellite observability — whether a physical mark is imageable at all (intelligence.satellite_observability).' },
|
|
81
81
|
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).' },
|
|
82
82
|
minInformationGain: { type: 'number', minimum: 0, maximum: 1, description: 'Keep only signals whose intelligence.expected_information_gain >= this (0-1).' },
|
|
83
|
+
taskableOnly: { type: 'boolean', description: 'Keep only signals whose coordinate is search_ready (taskable) — drops country centroids, ADM1 mismatches, reporting-dateline fallbacks and unresolved fixes (intelligence.geo_validation.search_ready). Use when the results feed automated imagery tasking.' },
|
|
83
84
|
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.' },
|
|
84
85
|
},
|
|
85
86
|
},
|
|
@@ -89,7 +90,9 @@ export const TOOLS = [
|
|
|
89
90
|
annotations: { readOnlyHint: true },
|
|
90
91
|
description: 'Aggregate statistics over the signal corpus — total event count plus per-category and per-day ' +
|
|
91
92
|
'breakdown (trend) for a bounding box and date window. Cheaper than query_signals (returns ' +
|
|
92
|
-
'roll-ups, not rows).
|
|
93
|
+
'roll-ups, not rows). NOTE the unit: `total` counts article-deduped events (meta.population = ' +
|
|
94
|
+
'article_deduped_events), which is NOT cluster-collapsed, so it is >= the query_signals count ' +
|
|
95
|
+
'for the same window. Costs 1 token(s) per call.',
|
|
93
96
|
inputSchema: {
|
|
94
97
|
type: 'object',
|
|
95
98
|
properties: {
|
|
@@ -104,8 +107,11 @@ export const TOOLS = [
|
|
|
104
107
|
name: 'query_hotspots',
|
|
105
108
|
annotations: { readOnlyHint: true },
|
|
106
109
|
description: 'Geographic hotspots — signal density grid-binned into cells, ranked by event count, each with ' +
|
|
107
|
-
'peak severity
|
|
108
|
-
'
|
|
110
|
+
'peak severity, the categories present, and up to 5 representative event_ids (trace a cell back ' +
|
|
111
|
+
'to its signals). Use to find WHERE activity is concentrating. NOTE the unit: cells count ' +
|
|
112
|
+
'satellite-observable points (meta.population = rs_observable_points); meta reports ' +
|
|
113
|
+
'source_point_count and dropped_by_geo_count / dropped_by_severity_count so point_count is fully ' +
|
|
114
|
+
'accountable. Costs 1 token(s) per call.',
|
|
109
115
|
inputSchema: {
|
|
110
116
|
type: 'object',
|
|
111
117
|
properties: {
|
|
@@ -146,8 +152,9 @@ export const TOOLS = [
|
|
|
146
152
|
annotations: { readOnlyHint: true },
|
|
147
153
|
description: 'Search the satellite imagery catalog (Sentinel-1/2, OPERA RTC-S1) for scenes over an area and ' +
|
|
148
154
|
'date window — the natural follow-up to a signal (find imagery over the event location). Returns ' +
|
|
149
|
-
'
|
|
150
|
-
'bytes.
|
|
155
|
+
'scene metadata (id, datetime, footprint, cloud cover, platform, orbit geometry, coverage, catalog ' +
|
|
156
|
+
'link) — no imagery bytes. Pass eventDate to classify each scene pre/post/same-day and get ' +
|
|
157
|
+
'pre/post bracketing + SAR change-pair readiness in meta. Costs 2 token(s) per call.',
|
|
151
158
|
inputSchema: {
|
|
152
159
|
type: 'object',
|
|
153
160
|
properties: {
|
|
@@ -155,9 +162,10 @@ export const TOOLS = [
|
|
|
155
162
|
collection: { type: 'string', enum: [...IMAGERY_COLLECTIONS], description: 'Catalog collection. Defaults to sentinel-2-l2a.' },
|
|
156
163
|
date: { type: 'string', description: 'Window end date, YYYY-MM-DD (UTC). Defaults to today.' },
|
|
157
164
|
days: { type: 'integer', minimum: 1, maximum: SIGNALS_MAX_DAYS, description: 'Window length in days. Defaults to 7.' },
|
|
165
|
+
eventDate: { type: 'string', description: 'Event date, YYYY-MM-DD (UTC). When set, each scene is tagged timing=pre/post/same_day and meta reports has_pre_baseline / has_post / bracketing_available; for sentinel-1-grd it also reports sar_change_pair_ready + orbit_note (a valid change pair needs a pre and post scene on the same relative orbit).' },
|
|
158
166
|
cloudCoverMax: { type: 'number', minimum: 0, maximum: 100, description: 'Sentinel-2 only: max cloud cover %.' },
|
|
159
167
|
limit: { type: 'integer', minimum: 1, maximum: 100, description: 'Max scenes to return. Defaults to 25.' },
|
|
160
|
-
responseFormat: { type: 'string', enum: ['concise', 'detailed'], description: 'Per-scene field detail. "concise" (default)
|
|
168
|
+
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.' },
|
|
161
169
|
},
|
|
162
170
|
required: ['bbox'],
|
|
163
171
|
},
|
|
@@ -167,6 +175,10 @@ export const TOOLS = [
|
|
|
167
175
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
168
176
|
description: 'Run an AI RS (remote-sensing) deep-dive assessment for a specific signal: what to observe, ' +
|
|
169
177
|
'recommended sensors, and a collection window. `eventId` is the `id` from query_signals. ' +
|
|
178
|
+
'The result also carries a deterministic `context` block (event id/date, normalized target, AOI ' +
|
|
179
|
+
'bbox, observability + quality verdict, and an `imagery_handoff` giving the exact bbox + event_date ' +
|
|
180
|
+
'to pass to search_imagery for REAL pre/post scene candidates) — turning the assessment into an ' +
|
|
181
|
+
'actionable collection plan. ' +
|
|
170
182
|
"Costs 5 (quick) or 15 (deep) tokens, charged to the key owner's balance. A prior assessment for " +
|
|
171
183
|
'the same signal is cached (no re-charge). The exact charge and remaining balance are in meta.tokens. ' +
|
|
172
184
|
'Signals that are not satellite-observable (observability:"not-observable" — e.g. political statements ' +
|
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.9';
|
|
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.9",
|
|
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": {
|