PayPerScreen

Registre officiel Productivité

Sanctions, crypto wallet, email and IP screening for agents. Pay per check in USDC via x402.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package payperscreen-mcp
Claude Code
claude mcp add payperscreen -e 'PAYPERSCREEN_PRIVATE_KEY=<your payperscreen_private_key>' -e 'PAYPERSCREEN_MAX_SPEND=<PAYPERSCREEN_MAX_SPEND>' -e 'PAYPERSCREEN_NETWORK=<PAYPERSCREEN_NETWORK>' -- npx -y payperscreen-mcp@0.1.2
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "payperscreen": {
            "command": "npx",
            "args": [
                "-y",
                "payperscreen-mcp@0.1.2"
            ],
            "env": {
                "PAYPERSCREEN_PRIVATE_KEY": "<your payperscreen_private_key>",
                "PAYPERSCREEN_MAX_SPEND": "<PAYPERSCREEN_MAX_SPEND>",
                "PAYPERSCREEN_NETWORK": "<PAYPERSCREEN_NETWORK>"
            }
        }
    }
}

Variables d'environnement

  • PAYPERSCREEN_PRIVATE_KEY secret Private key of a wallet holding a few dollars of USDC; pays 1 to 2 cents per check. Free tools work without it.
  • PAYPERSCREEN_MAX_SPEND Maximum USD the server may spend per session (default 1.00).
  • PAYPERSCREEN_NETWORK Where the wallet holds USDC: base (default), polygon or arbitrum.

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. PayPerScreen
  2. What it checks
  3. Calling it
  4. Use it from Claude, Cursor or any MCP client
  5. Running your own
  6. Data sources
  7. Not legal advice
  8. Contributing
  9. Licence

PayPerScreen

Pay-per-check compliance screening over x402. Sanctions names, crypto wallets, emails and IP addresses, paid per request in USDC on Base, Polygon or Arbitrum. No account, no API key, no contract.

This repo is the whole thing: the paid API, the website, the case queue and the list ingest. Use the hosted version, or run your own.

What it checks

EndpointPriceWhat it does
GET /screen?name=$0.02Fuzzy name match against 14 government lists, refreshed daily: OFAC SDN and non-SDN, UN, EU, UK, Canada (SEMA), Switzerland (SECO), Australia (DFAT) and the US Consolidated Screening List (BIS Entity, Denied Persons, Unverified, Military End-User; State Dept ISN and ITAR). Each hit includes record ID, programmes, aliases and a date of birth / nationality / type comparison
GET /context?name=$0.05The same comparison for the top hit; now included in /screen, kept for existing integrations
GET /screen-address?address=$0.02Exact match against OFAC sanctioned addresses (with the listed party), Tether USDT freezes on Tron, and known hack proceeds. Each source is reported separately
GET /screen-email?email=$0.02Ten deterministic signals: MX, disposable domain, domain age, certificate history, DNSBL, typo-squat, role account, mailbox probe and more
GET /screen-ip?ip=$0.01Spamhaus ZEN and Tor exit node check (beta)

No LLM anywhere in the scoring. Every result says which sources it checked.

Calling it

Any x402 client works. The reference client is a single file:

PRIVATE_KEY=0x... node examples/agent-client.mjs screen "Jane Doe"

An unpaid request returns 402 Payment Required with the price; the client signs a USDC payment and retries.

Use it from Claude, Cursor or any MCP client

The mcp/ folder is an MCP server (npx -y payperscreen-mcp) that gives an AI agent screen_name, screen_wallet, check_email and check_ip tools, paying per check from a wallet you configure, with a spending cap. See mcp/README.md.

claude mcp add payperscreen -e PAYPERSCREEN_PRIVATE_KEY=0xYOUR_KEY -- npx -y payperscreen-mcp

Running your own

Two Node services from one repo, plus Postgres:

ServiceEntryPortWhat it is
APIcompliance-api.js4025The paid x402 endpoints and list refresh
Sitepayment-agent.js (npm start)4030Website, wallet payments, prepaid balance, case queue, admin
npm install
psql "$DATABASE_URL" -f schema.sql
node compliance-api.js        # API
npm start                     # website

API settings

VariableNeededPurpose
DATABASE_URLyesPostgres with the pg_trgm extension
SELLER_ADDRESSyesWallet that receives payments
CDP_API_KEY_ID, CDP_API_KEY_SECRETyesCoinbase CDP facilitator (settles payments)
AUTO_REFRESH_LISTS=1recommendedRefresh every list daily, starting 60 s after start
TRONGRID_API_KEYoptionalFaster USDT-on-Tron freeze sync
ETH_RPC_URL, BASE_RPC_URL, ARB_RPC_URL, OP_RPC_URLoptionalNode URLs that serve historical logs (e.g. Infura). Each one set switches on freeze coverage for that chain (USDT and USDC on Ethereum, USDC on Base, Arbitrum, Optimism); unset chains are skipped and not claimed
PUBLIC_API_URLoptionalPublic URL reported to x402 directories
TOPUP_MIN_USDoptionalMinimum prepaid top-up (default 1.25)
INTERNAL_API_KEYrecommendedSame random value (32+ characters) on both services. Prepaid-balance checks then come straight off the customer's balance via /internal/*, with no second on-chain payment
SOLANA_PAY_TOoptionalA Solana address to receive USDC; when set, every paid route also accepts payment on Solana

Site settings

VariableNeededPurpose
COMPLIANCE_API_URLyesWhere the API runs
BUYER_KEYyesSite wallet: pays the API for admin test checks (and for prepaid checks if INTERNAL_API_KEY isn't set)
INTERNAL_API_KEYrecommendedSame value as on the API; prepaid checks then come off customers' balances directly
ADMIN_CODEyesCode for /admin
DB_PATHyes in productionSQLite file for accounts, cases, balances (put it on a persistent volume)
CONTACT_EMAIL, CONTACT_X, CONTACT_FACEBOOKoptionalFooter contact details
ANALYTICS_SALToptionalSalt for privacy-preserving visitor counts
BASE_RPC_URLoptionalVerifies smart-contract wallet sign-ins

Data sources

SourceLicence
OFAC SDN and sdn_advanced.xml (US Treasury)Public domain
UN Security Council Consolidated ListPublic
EU Consolidated Financial Sanctions ListPublic
UK Sanctions List (FCDO)Open Government Licence
Consolidated Canadian Autonomous Sanctions List (Global Affairs Canada)Open Government Licence – Canada
Swiss sanctions list (SECO)Public
Australian Sanctions Consolidated List (DFAT)CC BY 4.0 (attributed on /lists)
US Consolidated Screening List (trade.gov: Commerce, State, Treasury)Public domain
Stablecoin freezesRead from the Tether USDT contract's public on-chain events on Tron (Ethereum and Circle USDC chains switch on when an RPC is set, see below)
Known hack proceeds (data/hack-addresses.json)Curated here from FBI notices (public domain) and published incident reports; each incident lists its sources
Crypto address fallback0xB10C/ofac-sanctioned-digital-currency-addresses, MIT

A screening result is a lookup against the listed sources, not a compliance decision. "No match" means no match on those lists only. See the methodology for exactly what each check does and doesn't cover.

Contributing

Issues and pull requests are welcome. Most useful right now: new public data sources (each kept as its own labelled result, never folded into "sanctioned"), and corrections to the hack list with a source link.

server.js, shop.js and check.js are early x402 experiments (a demo weather API), kept for reference; they aren't part of PayPerScreen.

Licence

MIT, see LICENSE.

Questions fréquentes

Qu'est-ce que PayPerScreen ?

Sanctions, crypto wallet, email and IP screening for agents. Pay per check in USDC via x402.

Comment installer PayPerScreen ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add payperscreen -e 'PAYPERSCREEN_PRIVATE_KEY=<your payperscreen_private_key>' -e 'PAYPERSCREEN_MAX_SPEND=<PAYPERSCREEN_MAX_SPEND>' -e 'PAYPERSCREEN_NETWORK=<PAYPERSCREEN_NETWORK>' -- npx -y payperscreen-mcp@0.1.2. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour PayPerScreen ?

Oui. Il attend PAYPERSCREEN_PRIVATE_KEY, à renseigner dans sa configuration.

PayPerScreen est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient PayPerScreen ?

Il est publié par TonytheTiger22. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.