offnadir-delta-mcp 1.25.0 → 1.26.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
- `38` tools · MCP server version `1.25.0` · [full reference](https://offnadir-delta.com/docs/mcp)
19
+ `40` tools · MCP server version `1.26.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
- 21 of the 38 tools cost nothing, so the first thing you run is free:
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.
@@ -150,6 +150,8 @@ Stand up continuous coverage and be told only when the answer changes. Creating
150
150
  | `create_watch` | Add a target to the Watchlist. | free |
151
151
  | `update_watch` | Rename a watch, or pause and resume it. | free |
152
152
  | `delete_watch` | Delete a watch by id. | free |
153
+ | `add_note` | Add a note to a watch, start a thread on it, or reply to one — one append-only ledger. | free |
154
+ | `delete_note` | Delete one note from a watch. | free |
153
155
 
154
156
  ### Workspace
155
157
 
@@ -203,7 +205,7 @@ Keys are shown once at creation, hashed at rest, and revocable at any time from
203
205
  | `imagery://collections` | The satellite catalog collections searchable via search_imagery — Sentinel-1 C-band SAR, Sentinel-2 optical, and NISAR L-band SAR (provisional calibration). Free. |
204
206
  | `status://current` | How current the data is (ingestion/enrichment frontier), the Daily World Brief status, and an Operational/Delayed/Degraded roll-up. Free. |
205
207
  | `brief://{date}` | The Daily World Brief for a specific UTC date (YYYY-MM-DD). Free. |
206
- | `watch://{watch_id}` | A Watchlist entry with its current state, latest meaningful change, measurements and (for event watches) the full event thread — the same body get_watch returns. Free. |
208
+ | `watch://{watch_id}` | A Watchlist entry with its current state, latest meaningful change, measurements, (for event watches) the full event thread, and the notes kept against it. The same body get_watch returns. Free. |
207
209
 
208
210
  | Prompt | Description |
209
211
  | --- | --- |
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.25.0.
16
+ // Generated for Off-Nadir Delta MCP 1.26.0.
17
17
  export const TOOLS = [
18
18
  {
19
19
  "name": "query_signals",
@@ -1841,7 +1841,7 @@ export const TOOLS = [
1841
1841
  },
1842
1842
  {
1843
1843
  "name": "get_watch",
1844
- "description": "One watch end to end, in a single call: its target, current state, latest meaningful change, measurements with their recent series, standing-order questions, and — for an event watch — the event’s verification state, casualty/attribution fields, recent developments, imagery availability, and the full event thread (timeline + sources). Built so an agent does not need a chain of follow-up calls to answer \"what is the state of what I watch\". Free of token charges unless include_passes is set; an area watch’s FULL measurement history remains get_monitored_area (export-gated) — this returns the recent series.",
1844
+ "description": "One watch end to end, in a single call: its target, current state, latest meaningful change, measurements with their recent series, standing-order questions, and — for an event watch — the event’s verification state, casualty/attribution fields, recent developments, imagery availability, and the full event thread (timeline + sources). Also returns what this account has written on the watch: the one line saying what it is tracking, and the notes and judgments kept against it, newest first. Built so an agent does not need a chain of follow-up calls to answer \"what is the state of what I watch\". Free of token charges unless include_passes is set; an area watch’s FULL measurement history remains get_monitored_area (export-gated) — this returns the recent series.",
1845
1845
  "inputSchema": {
1846
1846
  "type": "object",
1847
1847
  "properties": {
@@ -2033,6 +2033,126 @@ export const TOOLS = [
2033
2033
  "idempotentHint": true
2034
2034
  }
2035
2035
  },
2036
+ {
2037
+ "name": "add_note",
2038
+ "description": "Add a note to a watch, start a thread on it, or reply to one — one append-only ledger. Give a title and the note becomes a THREAD others can reply to (pass its id as parent_id); give neither and it is a plain note. Replies are one level deep and carry no title of their own. Separately, the difference between a note and a judgment is whether you state a confidence. With no confidence it is a NOTE: something worth writing down about this target, kept with it and superseding nothing. With confidence (high/moderate/low) it is a JUDGMENT, and it supersedes the previous judgment instead of overwriting it, so the record of what was thought when survives; likelihood (ICD 203 terms) separately says how probable the thing itself is. Gaps and a next check can be recorded alongside — what would change this, and when to look again. This is the account’s own record about its own target; it does not change the event’s public verification state. Free of token charges.",
2039
+ "inputSchema": {
2040
+ "type": "object",
2041
+ "properties": {
2042
+ "watch_id": {
2043
+ "type": "string",
2044
+ "description": "The id from list_watches or create_watch."
2045
+ },
2046
+ "note": {
2047
+ "type": "string",
2048
+ "description": "What you want kept with this watch."
2049
+ },
2050
+ "title": {
2051
+ "type": "string",
2052
+ "description": "Give it a heading and the note becomes a thread others can reply to. Omit for a plain note. A reply cannot have one."
2053
+ },
2054
+ "parent_id": {
2055
+ "type": "string",
2056
+ "description": "Reply to this note id (from get_watch). One level deep — reply to the thread, not to a reply."
2057
+ },
2058
+ "confidence": {
2059
+ "type": "string",
2060
+ "enum": [
2061
+ "high",
2062
+ "moderate",
2063
+ "low"
2064
+ ],
2065
+ "description": "How sure this judgment is — a statement about the evidence, not the event. Omit it and the entry is kept as a plain note, which supersedes nothing."
2066
+ },
2067
+ "likelihood": {
2068
+ "type": "string",
2069
+ "enum": [
2070
+ "very unlikely",
2071
+ "unlikely",
2072
+ "roughly even chance",
2073
+ "likely",
2074
+ "very likely",
2075
+ "almost certain"
2076
+ ],
2077
+ "description": "How probable the thing itself is (ICD 203). Omit rather than guess."
2078
+ },
2079
+ "gaps": {
2080
+ "type": "array",
2081
+ "items": {
2082
+ "type": "string"
2083
+ },
2084
+ "description": "What is missing — what would change this judgment. Only meaningful with a confidence."
2085
+ },
2086
+ "next_check": {
2087
+ "type": "string",
2088
+ "description": "When or what to look at next."
2089
+ }
2090
+ },
2091
+ "required": [
2092
+ "watch_id",
2093
+ "note"
2094
+ ]
2095
+ },
2096
+ "outputSchema": {
2097
+ "type": "object",
2098
+ "properties": {
2099
+ "summary": {
2100
+ "type": "string",
2101
+ "description": "One-line natural-language summary of the result, ready to relay to a user."
2102
+ },
2103
+ "note": {
2104
+ "type": "object"
2105
+ }
2106
+ },
2107
+ "required": [
2108
+ "note"
2109
+ ]
2110
+ },
2111
+ "annotations": {
2112
+ "readOnlyHint": false,
2113
+ "openWorldHint": false,
2114
+ "destructiveHint": false
2115
+ }
2116
+ },
2117
+ {
2118
+ "name": "delete_note",
2119
+ "description": "Delete one note from a watch. The note itself is removed; the fact that it was deleted stays in the account’s action log, so nothing disappears without a trace. If the note was a judgment that a later judgment superseded, the later one stays — it simply stops pointing at what it replaced. Free of token charges.",
2120
+ "inputSchema": {
2121
+ "type": "object",
2122
+ "properties": {
2123
+ "watch_id": {
2124
+ "type": "string",
2125
+ "description": "The id from list_watches or create_watch."
2126
+ },
2127
+ "note_id": {
2128
+ "type": "string",
2129
+ "description": "The note id from get_watch or add_note."
2130
+ }
2131
+ },
2132
+ "required": [
2133
+ "watch_id",
2134
+ "note_id"
2135
+ ]
2136
+ },
2137
+ "outputSchema": {
2138
+ "type": "object",
2139
+ "properties": {
2140
+ "summary": {
2141
+ "type": "string",
2142
+ "description": "One-line natural-language summary of the result, ready to relay to a user."
2143
+ },
2144
+ "deleted": {
2145
+ "type": "string"
2146
+ }
2147
+ }
2148
+ },
2149
+ "annotations": {
2150
+ "readOnlyHint": false,
2151
+ "openWorldHint": false,
2152
+ "destructiveHint": true,
2153
+ "idempotentHint": true
2154
+ }
2155
+ },
2036
2156
  {
2037
2157
  "name": "search_entities",
2038
2158
  "description": "Find a place in the location registry — ports and harbours, military bases and airfields, power and energy plants, maritime chokepoints and named seas. Use it to turn a name into something the other tools can anchor on, or to check whether Delta knows a facility at all. Matches the registry’s own names and aliases; a facility whose only recorded name is in the local script is findable by that name, not by an English one that does not exist in the source. Returns at most 50 rows and has no pagination — this is a lookup, not a data export. Costs 1 token per lookup. Cite the returned attribution wherever a registry name is shown.",
@@ -2649,7 +2769,7 @@ export const RESOURCE_TEMPLATES = [
2649
2769
  {
2650
2770
  "uriTemplate": "watch://{watch_id}",
2651
2771
  "name": "One watch, end to end",
2652
- "description": "A Watchlist entry with its current state, latest meaningful change, measurements and (for event watches) the full event thread — the same body get_watch returns. Free.",
2772
+ "description": "A Watchlist entry with its current state, latest meaningful change, measurements, (for event watches) the full event thread, and the notes kept against it. The same body get_watch returns. Free.",
2653
2773
  "mimeType": "application/json"
2654
2774
  }
2655
2775
  ];
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.25.0';
24
+ const VERSION = '1.26.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.25.0",
3
+ "version": "1.26.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": {