cyanheads/sanctions-screening-mcp-server
Screen names against eleven OFAC, EU, UK, UN, BIS, and State sanctions and export-control lists and resolve legal entities against GLEIF, matched offline over a local SQLite + FTS5 mirror. A screening aid, not a compliance determination.
Changelog
All notable changes to this project. Each entry links to its full per-version file in changelog/.
0.6.0 — 2026-10-31
Screen BIS and State export-control lists and continue ownership investigations across bounded pages.
0.5.1 — 2026-10-20
Fuzzy recall across early typos and Russian comparison forms, with scheduled refreshes isolated from serving requests.
0.5.0 — 2026-10-03 · ⚠️ Breaking
sanctions_screen_name pages every match it counts, pools fuzzy candidates per list, and returns an OFAC party both OFAC lists publish as one hit; sanctions_get_entity and trace nodes also screen other names and look up the LEI and registration number. Existing mirrors need mirror:refresh for the data fixes.
0.4.0 — 2026-09-25 · ⚠️ Breaking
GLEIF refresh applies the delta window its checkpoint calls for, deletions included, and now runs on the HTTP cron; sanctions_resolve_entity searches every name GLEIF publishes; ownership traces report each node's parent status from GLEIF reporting exceptions. Existing mirrors need one mirror:init.
0.3.0 — 2026-09-25 · ⚠️ Breaking
New sanctions_screen_identifier looks up an IMO number, SWIFT/BIC, wallet address, or document number exactly; sanctions_get_designation resolves published reference numbers; dates keep the precision their source published; and a failing source no longer stops a sanctions refresh.
0.2.0 — 2026-09-24 · ⚠️ Breaking · 🛡️ Security
Native-script names are indexed and screenable, XML entities are decoded at parse time, sanctions_get_designation returns the details each list publishes, and a refresh removes delisted designations. Both name tools now reject unmatchable and oversized names.
0.1.12 — 2026-09-20 · ⚠️ Breaking
Adopts mcp-ts-core 0.13.6: an out-of-schema tool call now returns InvalidParams instead of ValidationError, and snake_case/kebab-case argument spellings are rewritten instead of rejected. Also declares node-cron so the scheduled sanctions-mirror refresh registers on HTTP boot (#28).
0.1.11 — 2026-08-25
Adopt @cyanheads/mcp-ts-core 0.12: tool inputs are strict at the root, so an undeclared argument key is rejected by name instead of silently ignored — and the docs that named parameters in snake_case now match the camelCase the schemas declare
0.1.10 — 2026-08-16
Stream every sanctions source instead of buffering the whole document — the mirror:init sanctions leg now peaks at 480 MiB where it previously OOM-killed the run — and drop records with no source identifier or no usable name rather than minting a fresh UUID each harvest
0.1.9 — 2026-08-16
Rank fuzzy candidates that one shared exact token ties on query-token coverage, and disclose what the ownership graph and the cross-reference screens could not do — depth truncation, unhydrated nodes, unavailable screening, and capped hit lists
0.1.8 — 2026-08-16
Make capped screening results page-retrievable with an honest exact-vs-lower_bound count, gate the designation and entity URI resources on mirror readiness, and restore per-source url/license on sanctions://sources
0.1.7 — 2026-07-04
Fix a whole-string Jaro-Winkler prefix-inflation false positive in fuzzy screening admission with a folded-length-ratio guard shared by the sanctions and LEI fuzzy paths
0.1.6 — 2026-07-04 · 🛡️ Security
Fix a fuzzy-match single-token false positive and namespace-prefixed GLEIF XML parsing, advance GLEIF delta freshness reporting, stream the golden-copy ingest, and clear a moderate js-yaml DoS advisory via the mcp-ts-core ^0.10.10 bump
0.1.5 — 2026-06-20
Adopt @cyanheads/mcp-ts-core ^0.10.9 — re-synced scripts/ guards add a dependency-specifier check that rejects floating specifiers (latest/*/dist-tags) in package.json + bun.lock, and the packaging lint now validates the Codex/Claude plugin marketplace manifests
0.1.4 — 2026-06-19
Adopt @cyanheads/mcp-ts-core ^0.10.8 — ctx.content media collector, canvas invalid_sql classification, DuckdbProvider.describe() filter fix, fresh-scaffold devcheck guards; @types/node 26 + dependency refresh
0.1.3 — 2026-06-19
Fixes: uniform minScore floor in fuzzy screening, mirror-script logger output, screenNodes doc correction
0.1.2 — 2026-06-15
Public hosted endpoint at https://sanctions-screening.caseyjhand.com/mcp
0.1.1 — 2026-06-14
Scope the README title to the published npm name, @cyanheads/sanctions-screening-mcp-server.
0.1.0 — 2026-06-13
Initial release: screen names against OFAC, EU, UK, and UN sanctions lists and resolve legal entities against GLEIF, fuzzy-matched offline over a local SQLite + FTS5 mirror. A screening aid, not a compliance determination.