Odel
Off-Nadir Delta

Off-Nadir Delta

@off-nadir-labTypeScriptApache-2.0Updated 2 days ago

From first signal to satellite evidence: live world-event intelligence and collection planning.

View on GitHub
Server endpointStreamable HTTPOAuthProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

Off-Nadir Delta MCP

From first signal to satellite evidence. Give an AI agent a live intelligence workflow: discover an event, verify the reporting, identify what evidence is missing, determine whether a satellite can actually resolve it, and produce a collection-ready plan.

Real-time event and geospatial intelligence for OSINT, geopolitical risk, and GEOINT work — source-linked, geolocated, and current, not a training snapshot.

41 tools · MCP server version 1.28.0 · full reference

What it does

Seeing the event is easy. Knowing what you can prove — and what evidence is still missing — is the product. Delta:

  • monitors emerging world events and geolocates them
  • checks claims against source-linked open data, and reports the source breadth behind each one
  • assesses whether the event is observable from space, at what resolution, and by which sensor
  • returns a collection-ready recommendation: what to collect, where, and when

Connect

Hosted server — recommended

No install. Point any MCP client at the remote endpoint and approve once over OAuth 2.1 (Dynamic Client Registration is supported, so most clients need only the URL):

https://offnadir-delta.com/api/v1/mcp

In the Claude or ChatGPT apps: Settings → Connectors → Add custom connector, paste that URL. Cursor and VS Code have one-click installs on the docs page.

Claude Code:

claude mcp add --transport http off-nadir-delta https://offnadir-delta.com/api/v1/mcp

This package — local stdio

Use this when your client cannot do remote OAuth, or you would rather hold an API key in an environment variable and pin a version. Get a key at offnadir-delta.com/account/api.

{
  "mcpServers": {
    "off-nadir-delta": {
      "command": "npx",
      "args": ["-y", "offnadir-delta-mcp"],
      "env": { "OFFNADIR_DELTA_API_KEY": "ond_..." }
    }
  }
}

Docker:

docker run -i --rm -e OFFNADIR_DELTA_API_KEY=ond_... offnadir-delta-mcp

The package forwards tools/call to the hosted server with your key. tools/list answers locally from a generated catalog, so registries can introspect it without credentials.

First call — free

23 of the 41 tools cost nothing, so the first thing you run is free:

Give me the latest Daily World Brief. Lead with the three most significant developments, explain why each matters, and cite the supporting signals.

Then try the full signal-to-satellite workflow:

Find the highest-priority observable event from the last 24 hours, verify the reporting, and recommend the best available satellite collection plan.

Tools

Discover

What is happening, where it concentrates, and what today looks like.

ToolWhat it doesCost
query_signalsQuery geolocated world event signals (Delta Signals: geopolitical, security, disaster, and infrastructure events distilled from global news media, AI-enriched with severity/GEOINT scores and satellite-collection recommendations).3 tok
query_statsAggregate statistics over the signal corpus — total event count plus per-category and per-day breakdown (trend) for a bounding box and date window.1 tok
query_hotspotsGeographic hotspots — signal density grid-binned into cells, ranked by event count, each with peak severity, the categories present, and up to 5 representative event_ids (trace a cell back to its signals).1 tok
get_world_briefFetch the Daily World Brief — an AI-synthesized OSINT/GEOINT digest of the previous UTC day's worldwide event signals (headline, executive summary, top developments with why-it-matters and what-to-watch, per-theme roll-up, ranked signals).free
query_developmentsWhat actually CHANGED about the events in an area — not which articles are new.3 tok
get_event_threadThe full history of ONE event: its current state, and every change in the order it happened.free
search_entitiesFind a place in the location registry — ports and harbours, military bases and airfields, power and energy plants, maritime chokepoints and named seas.1 tok
get_entityWhat has happened at one place.1 tok
get_related_eventsWhat else connects to one event, and what came before and after it.3–8 tok

Plan

Whether a satellite can resolve it, which one, and when it next passes.

ToolWhat it doesCost
search_imagerySearch the satellite imagery catalog (Sentinel-1, Sentinel-2, NISAR L-band) for scenes over an area and date window — the natural follow-up to a signal (find imagery over the event location).2 tok
plan_event_imageryPlan the imagery evidence for ONE event in a single call, instead of guessing collections one at a time.4 tok
rank_imaging_priorityWHERE — and with what class (and therefore cost) of satellite — is observation most worthwhile right now?1 tok
survey_observable_eventsWhich events in a window can a given in-app sensor actually RESOLVE?1 tok
predict_satellite_passesWHEN can this place next be imaged, and by WHAT — the timing half of collection planning.2 tok
test_hypothesesGiven competing statements, return the observation that would REFUTE the most of them — and, in the same answer, the observations that would refute none of them however convincing they look.3 tok
lookup_elevationMeasure terrain height from the Copernicus DEM GLO-30 — a point (lat + lon), an area (bbox), or a drawn polygon, for which the statistics are computed over the samples INSIDE the ring rather than its bounding box.free
analyze_terrainCompute FROM the terrain rather than reading heights out of it (that is lookup_elevation).free

Analyze

Turn reporting into a cited assessment you can audit afterwards.

ToolWhat it doesCost
assess_signalRun an AI RS (remote-sensing) deep-dive assessment for a specific signal: what to observe, recommended sensors, and a collection window.5/15 tok
ask_analystAsk the Delta Analyst an OSINT/GEOINT question.5–123 tok
get_analyst_jobFetch the status and result of an ask_analyst run by job_id.free
query_claimsRead the LEDGER of claims this key has been given — every factual assertion the Analyst made, with its evidence class (CONFIRMED / REPORTED / PARTY_CLAIM / ASSESSMENT), how many INDEPENDENT source families backed it, and the publishers.free
refine_locationResearch one signal's location further and, if the sources genuinely narrow it, store and return the better coordinate.3–29 tok
measure_index_seriesMeasure a spectral index over an area, scene by scene, back through the Sentinel-2 archive — the answer to "how has this changed since ".0.5 tok
detect_shipsCount vessel-like targets in ONE SAR scene over an area, using CFAR detection on Sentinel-1.5 tok

Watch

Stand up continuous coverage and be told only when the answer changes. Creating and listing cost nothing — you are metered only when a check actually fires, or a new acquisition is actually measured.

ToolWhat it doesCost
create_standing_orderPut an area under CONTINUOUS watch: save a question plus a bounding box and Delta re-answers it on a schedule, notifying only when the answer actually changed.free
list_standing_ordersList the standing orders on this key, with each one’s cadence, watched area, when it last checked, when it last actually fired, and how many consecutive checks found nothing (quiet_checks — a high number means the watch is not earning its place).free
delete_standing_orderDelete a standing order by id, or pause/resume it instead by passing active=false/true.free
list_monitored_areasList the places under continuous satellite measurement on this key (Delta Watchlist measurements), with each area’s metric, most recent value, change since the previous measurement, whether that value was flagged anomalous, and coverage — how many acquisitions were measured versus how many exist.free
get_monitored_areaFetch one monitored area with its full measurement history — every acquisition that was measured, its value, and whether it was flagged anomalous.free
create_monitored_areaPut a place under continuous satellite measurement: pick an area and what to count, and every new Sentinel-1 / Sentinel-2 / VIIRS acquisition over it is measured automatically from then on.free
list_watchesThe Watchlist: everything this account keeps watch on — areas under satellite measurement, areas under event watch (standing orders), and real-world events being tracked — aggregated as one list with a state bucket per watch: needs_attention (anomaly, error, or a notable development), changed_today (a meaningful change in the last 24 h), awaiting_data, or stable.free
get_watchOne 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).free
create_watchAdd a target to the Watchlist.free
update_watchRename a watch, or pause and resume it.free
delete_watchDelete a watch by id.free
add_noteAdd a note to a watch, start a thread on it, or reply to one — one append-only ledger.free
delete_noteDelete one note from a watch.free

Workspace

The map assets you own — saved layer sets and your own uploaded data.

ToolWhat it doesCost
list_layer_setsList the layer sets saved on this account — the named map configurations a user builds in the app, each with how many layers it holds, its tags, when it was last changed and when it was last opened.free
get_layer_setRead one saved layer set by id: its name, description, layer count, size, tags and timestamps.free
list_uploaded_layersList the data this account uploaded to the map — name, format, size and when it was added — plus the formats the uploader actually accepts.free

Account

Pre-flight your token balance before a metered call.

ToolWhat it doesCost
get_usageCheck the calling key's remaining token balance and plan capabilities — monthly allocation, tokens used this period, tokens remaining, and whether the plan includes AI tools over the API (assess_signal / ask_analyst).free

Pricing and metering

Usage-based Delta tokens, identical over REST and MCP. Costs above are generated from the same constant the biller reads, and every metered result carries the exact charge it incurred — so you never have to trust a number in a README. Free tools never touch the balance.

ask_analyst is hybrid-async: it enqueues a run and returns a job_id immediately; poll get_analyst_job (free — the run is charged once, on completion). Most questions finish in ~30–90s; a brief with satellite-imagery lookups or many sources can take 2–3 minutes.

The API and the MCP server are available on every plan, including Free — the only gate is your token balance. Call get_usage (free) to pre-flight. Current limits and package prices: offnadir-delta.com/pricing.

Authentication

Two credentials are accepted on the hosted endpoint:

  • OAuth 2.1 with PKCE and Dynamic Client Registration — for interactive clients
  • Bearer API key (Authorization: Bearer ond_...) — for servers, CI, and this stdio package

Keys are shown once at creation, hashed at rest, and revocable at any time from /account/api.

Resources and prompts

ResourceDescription
brief://latestThe most recent AI-synthesized Daily World Brief (JSON). Free.
signals://schemaJSON Schema of the public Signal shape returned by query_signals / /api/v1/signals.
usage://currentRemaining token balance and plan capabilities for the calling key. Free.
imagery://collectionsThe satellite catalog collections searchable via search_imagery — Sentinel-1 C-band SAR, Sentinel-2 optical, and NISAR L-band SAR (provisional calibration). Free.
status://currentHow current the data is (ingestion/enrichment frontier), the Daily World Brief status, and an Operational/Delayed/Degraded roll-up. Free.
brief://{date}The Daily World Brief for a specific UTC date (YYYY-MM-DD). Free.
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.
PromptDescription
daily-situation-briefingSummarize the current world situation from the Daily World Brief.
assess-top-signalFind the highest-severity recent signal in an area/category and run an RS assessment.
aoi-watchScan an area of interest for recent escalations and recommend collection.
market-exposure-checkFind recent events that could plausibly move a given market (oil, grain, shipping, ...) and explain each transmission channel. Informational only — not investment advice.

Links

License

Apache-2.0