Sanctions screening you can explain to a regulator.
One API call screens a name against ten sanctions lists in under 100 milliseconds. Every match shows how it was found, why it scored, and what to do about it.
Free tier, no card · Console, API, or agent · 10-year audit trail
Two ways to fail an examiner. Most vendors only solve one.
Screening is a tradeoff between catching everything and crying wolf. Tune for recall and analysts drown in noise. Tune for convenience and real matches slip through. Both fail on audit day.
A missed match is a federal violation.
OFAC enforcement is strict liability. Across 526 enforcement documents from 2003 to 2025, combined penalties exceed $18.5 billion. A single missed name can end a young company.
A flood of alerts is just as dangerous.
When every common name trips a hit, analysts start rubber-stamping. Alert fatigue is how a real match gets dismissed in a queue of a thousand fake ones.
A 96.7 drops to 27.1 the moment the facts disagree.
The name matched. But the birthday is off by fifteen years and the country is wrong. Noble Sight applies a transparent penalty for each mismatch and the score falls below threshold automatically — no analyst required.
Most vendors give you a score. Noble gives you the score, and the reason it changed.
// a match found through an AI-generated spelling variation { "score": 92.4, "source": "OFAC SDN", "match_sources": [{ "source": "ofac_ai_variation", "trigram_score": 84.0, "soundex_match": true, "variation": "Dmitriy", "reason": "Common Slavic transliteration" }] }
When the examiner asks “why did this match?” the answer is already in the response.
Match pathway
Which list, and whether it matched on characters, sound, or an AI-generated variation.
The variation that triggered it
The exact alternate spelling, and the recorded reason it was generated.
Structured dismissal reasons
Every penalty named: which attribute disagreed, by how much, and its effect on the score.
The published research is the architecture. The architecture is the product.
LLMs cut false positives by 92% and raise detection by 11% — but run 10,000× slower. Their recommendation: a model cascade.
Noble precomputes AI variations at import time — amortizing the LLM cost once per list update, not once per query. That step is not in the paper.
Ten lists. One engine. Watched continuously.
Every list runs through the same trigram, phonetic, and AI matching. Each is polled for changes and delta-imported the moment it updates. Portfolio monitoring rescreens only what changed.
Compliance infrastructure should be the most predictable thing in your stack.
Noble Sight is a single 18 MB binary on a distroless image. No shell. No package manager. No runtime. There is nothing to exploit because there is nothing there.
| Property | Noble Sight | Typical screening vendor |
|---|---|---|
| Container image | 18 MB, distroless, no shell | 500 MB–1 GB, full OS |
| Runtime | Native machine code | JVM, Node, or Python |
| Cold start | < 1 second | 15–30 seconds |
| Idle memory | ~30 MB | 300–500 MB |
| Dependencies | Go stdlib + PostgreSQL | Hundreds of transitive packages |
| SQL | Parameterized, no ORM | ORM-generated abstraction |
Not audit as a feature. Audit as the data model.
Every decision persisted
Full request, full response, scores, timestamp, and trace ID — stored immutably, append-only.
Tagged with the list version
Each screening records the OFAC publish ID active at the time. “What was the list on March 1?” has an answer.
HMAC-signed webhooks
Alerts pushed in real time, signed with HMAC-SHA256, secrets encrypted at rest, retried on failure.
Exportable on demand
Pull any screening by trace ID, or a full date range, for an examiner — in one call.
# produce the screen that triggered this report curl "https://noblesight.io/v1/export\ ?trace_id=onboarding-acct-7891" \ -H "X-API-Key: $NOBLE_API_KEY" # the full record — request, response, list version { "trace_id": "onboarding-acct-7891", "client_id": "acme-bank", "screened_at": "2026-03-09T10:15:00Z", "ofac_list_version": { "publish_id": 1234, "publish_date": "2026-03-08" }, "request": { "name": "..." }, "response": { "match_count": 1 } }
Click it, call it, or let an agent run it.
Analysts want a screen and a button. Engineers want an endpoint. The newest member of the team is an AI agent. Noble Sight meets all three — because underneath, they are the same operation.
Console
A point-and-click workspace for compliance analysts. Screen a name, work the alert queue, and resolve a case with a structured reason — no code, no training deck.
API
One REST call screens ten lists in under 100 milliseconds. The full /v1 surface runs the entire workflow, for the engineers building Noble into their stack.
Agents
Point Claude, ChatGPT, Cursor, or any MCP client at Noble — over a hosted URL or stdio — and your agent runs the desk in plain language: screen, triage, escalate, resolve.
There are no shadow paths. Console, API, and agents are the same operation underneath — one /v1 API, one database, one immutable audit trail. No console-only shortcut. No agent that can skip a control. What an examiner sees is a single record, no matter who, or what, did the work.
The case is on the screen. The decision is one click away.
Not every compliance analyst writes code, and they shouldn’t have to. The console puts the alert queue, the match evidence, and the disposition in one place — point, click, decide.
Everything on one screen
The match, the score, and the OFAC 5-step evidence — date of birth, nationalities, addresses, government IDs — side by side. No tab-hopping to make the call.
Decide with a reason, not a vibe
Resolve as a false positive or a true match from a fixed set of structured reasons. High-score matches require a second reviewer before they close.
The audit trail writes itself
Every click — assign, escalate, dismiss — is logged with the analyst, the reason, the timestamp, and the list version. Examiner-ready by default.
No code required
The same screening engine and the same audit trail as the API, behind a screen and a button.
One REST API for the entire compliance workflow.
Screening is a single endpoint. So is everything around it — alerts, batch, webhooks, portfolio monitoring, and audit export. Clean JSON in, structured JSON out, versioned and backwards-compatible. You integrate once and add capabilities without re-plumbing.
The code is the documentation
A single typed contract is the source of truth for every endpoint, field, and error code — no generated client and no OpenAPI spec to drift out of date.
Stripe-style errors
Every failure returns the same structured body — type, code, message, param, and request_id — machine-parseable and human-readable at once.
Traceable end to end
Pass an X-Trace-ID header and follow a single screening from the HTTP request, through the SQL, into the immutable audit log.
Versioned and stable
/v1 is a promise. Changes are additive only — new fields never break a working integration.
# one base URL, the whole workflow # screening POST /v1/screen POST /v1/batch # alerts & case management GET /v1/alerts GET /v1/alerts/{id} POST /v1/alerts/{id}/resolve POST /v1/alerts/{id}/escalate # real-time & monitoring POST /v1/webhooks POST /v1/portfolio # audit & account GET /v1/export GET /v1/usage # … full reference at /docs
Your AI compliance analyst. On rails.
Noble Sight ships a Model Context Protocol server — the same /v1 API, exposed as agent tools — hosted at a URL, or run locally over stdio. Point Claude, ChatGPT, Cursor, or any MCP client at it and your agent screens a name, triages the alert queue, escalates a credible hit, and closes a case — in plain language, end to end. The first sanctions API your AI agent can actually operate.
Connect in one line
Paste the URL and your key into any MCP client — nothing to install, nothing to host. Or keep the key on your own machine over stdio. Same tools either way.
It runs the workflow, not just the search
Screen, inspect the alert queue, escalate, dismiss a false positive, or file a true match with its OFAC disposition — the same actions a human analyst takes.
It cannot go rogue
Every tool call goes through the same REST API and tenant scope as everyone else. High-score matches still require four eyes — the agent that advances an alert can’t be the one that closes it.
Every action is on the record
Each agent decision lands in the same immutable, 10-year audit trail as a human’s — tagged with the list version and a trace ID an examiner can pull.
Included on every plan
Agent access is part of Noble from the Free tier up — no separate contract, no sales call. A free key takes a minute and no card.
# Hosted — point any MCP client at the URL, nothing to install { "mcpServers": { "noble": { "url": "https://mcp.noblesight.io", "headers": { "Authorization": "Bearer noble_live_…" } } } } # Local — keep the key on your own machine, over stdio { "mcpServers": { "noble": { "command": "noble", "args": ["mcp"], "env": { "NOBLE_API_KEY": "noble_live_…" } } } } # Then, in plain language: "Screen Vladimir Putin; if it's a strong match, escalate it." # → screen_name — alert #4471 created, score 97 # → escalate_alert — escalated, written to the audit trail
Free to start. Impossible to outgrow.
The free tier is production, not a trial. The full matching engine, explainability, and audit trail are included at every tier. You pay for volume and monitoring, never for the truth.
- Full hybrid matching
- Per-match explainability
- Immutable audit trail
- Alert management
- AI agent access (MCP)
- No credit card
- Everything in Free
- Deep AI screening
- Batch up to 1,000 / job
- HMAC webhooks
- Compliance exports
- Everything in Standard
- Batch up to 5,000 / job
- 5× the monthly volume
- Priority support
- Everything in Premium
- Batch up to 10,000 / job
- SLA & dedicated support
- SOC 2 package
Portfolio monitoring — continuous reverse screening that rescreens your entities whenever a sanctions list updates — is available as an add-on on any paid tier.
Screen your first name in sixty seconds.
Get a key, screen a name, read the evidence. No sales call required.
$ curl -X POST https://noblesight.io/v1/screen \ -H "X-API-Key: $NOBLE_API_KEY" \ -d '{"name": "Vladimir Putin"}'
Noble Sight