In production · v0.11.0 · list data 2026-10-01

Ship onboarding with
restricted-party screening built in.

One call screens a name against the OFAC SDN, EU and UN consolidated lists — with an audit trail a regulator can follow. Not a lookup a developer remembers to call: a gate that sits inside signup, key issuance and payment.

Read the API reference → See where it fits
26,564
Records screened
3
Consolidated lists
2026-10-01
Current data version
v0.11.0
Running build

Where it goes

Screening gaps at self-serve signup and at payment are the two places post-incident reviews keep landing on. Every one of them is a point where your system already pauses and waits for a yes — that is where the check belongs.

↳

Self-serve signup

Screen the person or company the moment they create an account — before a key exists and before anything is provisioned.

⌘

API key issuance

One call before the credential is minted. A blocked party never receives a key, so nothing downstream has to be revoked.

◈

Payment & payouts

Screen at the payment step, including the beneficiary. This is the gap most post-incident reviews point at.

One request

A key is required. The response shape below is abridged — the full schema is in the reference.

request
curl -sS https://sanc.mooocopy.com/screen \
  -H "X-API-Key: $SCREENING_KEY" \
  -H "Content-Type: application/json" \
  -d '{{"query_name": "AERO-CARIBBEAN"}}'
response
{"total_matches": 1,
 "data_version": "2026-10-02",
 "candidates": [{
   "entity_name": "AERO-CARIBBEAN",
   "list_name": "OFAC-SDN",
   "confidence_score": 0.9,
   "explanation": { "match_type": "alias" }
 }]}

match_type is one of exact · alias · fuzzy · fuzzy_alias.

What you actually get

List lookup plus fuzzy name matching is a commodity. These are the parts that survive a compliance review.

≡

Exact, alias and fuzzy matching

Every hit reports how it matched — exact, alias, fuzzy or fuzzy_alias — with a configurable threshold. The dangerous direction for screening is a false negative, so matching is built to over-report rather than miss.

⧉

Append-only audit trail

Every screen is recorded. Compliance teams need to show what was checked, when, and against which data version — not just get a yes/no today.

✓

Review queue

Matches at or above 0.9 confidence are flagged for human review alongside the automatic result, so the high end of the range never decides itself.

◇

Verifiable provenance

Each response carries data_version and sources, so a decision can be tied to a specific list snapshot later.

⊙

Per-tenant isolation

Multi-tenant API keys, per-tenant watchlists and per-tenant rate limits — one account cannot see or exhaust another.

⊘

No hidden LLM calls

An optional LLM cascade exists and is off by default. Screening data does not leave the box unless you deliberately enable it.

Endpoints

All operational endpoints are open; /screen requires a key.

MethodPathPurpose
POST/screenScreen an entity against the sanctions lists
GET/watchlistsList tenant watchlists and versions
POST/watchlists/{list_name}Upload a tenant watchlist (CSV, new version)
GET/casesList review-queue cases
GET/cases/{id}Read one review case
POST/cases/{id}Decide a pending review case
GET/auditQuery the append-only audit trail
GET/readyRecord count, data version and active sources
GET/openapi.jsonOpenAPI specification
GET/healthLiveness probe

Active sources: OFAC-SDNEU-ConsolidatedUN-Consolidated

Roadmap — not yet shipped

Listed here because they are the difference between a list lookup and a gate an AI platform can rely on. They are not implemented yet.

  • OFAC 50% Rule ownership penetration — an entity owned 50%+ by a designated person is itself blocked and appears on no list
  • On-chain / wallet screening for agent payment paths
  • Model Context Protocol server so agents can call the gate as a tool