79trust / 100

Screen Multi

by Sanctions Screening by nsgoods in Security & trust

x402 APIPassing, checked 19 min ago

Use this before an AI agent pays a wallet address, to check that the payee is not sanctioned. Screens one address (EVM, Solana, Bitcoin, TRON and similar) against OFAC, UN, EU and UK lists, each reported separately with its own list date inside a signed verdict. Pay only if verdict is clean and any_list_match is false. $0.01 in USDC on Base or Solana. An invalid address returns 400, not charged. Free preview: GET /screen-multi/preview

GET https://sanctions.nsgoods.org/screen-multi

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
383 ms typical, 477 ms slowest 5%
Last check
19 min ago
Next check
in 14 min

How to call it

# See the payment challenge (nothing is charged)
curl -i -X GET "https://sanctions.nsgoods.org/screen-multi?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96&chain=ethereum"
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fsanctions.nsgoods.org%2Fscreen-multi
const res = await pay("https://sanctions.nsgoods.org/screen-multi?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96&chain=ethereum");
console.log(await res.json());

Example input

{
  "address": "0x098B716B8Aaf21512996dC57EB0615e2383E2f96",
  "chain": "ethereum"
}

Example output

{
  "address": "0x098B716B8Aaf21512996dC57EB0615e2383E2f96",
  "any_list_match": true,
  "chain": "ethereum",
  "list_health": {
    "EU": {
      "available": true,
      "note": "official (public token)",
      "version_date": "2026-09-22T20:01:34.799+02:00"
    },
    "HMT": {
      "available": true,
      "note": null,
      "version_date": "29/09/2026"
    },
    "OFAC": {
      "available": true,
      "note": null,
      "version_date": "2026-09-23T19:02:12.183846+00:00"
    },
    "UN": {
      "available": true,
      "note": null,
      "version_date": "2026-09-29T16:07:00.700Z"
    }
  },
  "lists": [
    {
      "chain": "ETH",
      "entry_id": null,
      "list": "OFAC",
      "list_version_date": "2026-09-23T19:02:12.183846+00:00",
      "matched": true
    },
    {
      "list": "UN",
      "list_version_date": "2026-09-29T16:07:00.700Z",
      "matched": false
    },
    {
      "list": "HMT",
      "list_version_date": "29/09/2026",
      "matched": false
    },
    {
      "list": "EU",
      "list_version_date": "2026-09-22T20:01:34.799+02:00",
      "matched": false,
      "note": "official (public token)"
    }
  ],
  "matched_label": "ETH",
  "sanctioned": true,
  "signature": "0x…",
  "signed_by": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c",
  "verdict": "deny"
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
19 min agoPassed402383 ms$0.01
4 h agoPassed402375 ms$0.01
7 h agoPassed402352 ms$0.01
11 h agoPassed402394 ms$0.01
15 h agoPassed402396 ms$0.01
18 h agoPassed402477 ms$0.01
23 h agoPassed402396 ms$0.01
26 h agoPassed402381 ms$0.01
29 h agoPassed402677 ms$0.01
34 h agoPassed402356 ms$0.01