The compliance layer for stablecoin payments

Checks that arrive with their own proof.

Screen wallets, names, and companies with a single call — and get back cryptographic proof the check happened. When an auditor asks, you can show them, to the millisecond.

@onchaindiligence/sdk
const od = new OnchainDiligence({ account })

// resolves ENS, pays the 402, returns a signed result
const r = await od.screen('vitalik.eth')

r.data.sanctioned        // false
await od.anchor(r.attestation.signature) // → Tempo
Attestation · 200 signed
Sanctions screening
{
  "address": "0x7f26…38E5",
  "sanctioned": false,
  "checked_at": "2026-06-19T08:14:22.108Z"
}
Ed25519 signature Ua38OrEs63payepL…Xs74iCQ
A real, recorded response from this API — verifies against the public key below.
No account to call Paid in stablecoin Settles on Tempo
Signing key · Ed25519 ed25519-D8wfc7civVNG05Ds verify →
Live & listed Listed in the official MCP Registry  Indexed in Coinbase's x402 Bazaar Live on Tempo mainnet 
Try it live

Run a real check, right here.

Connect a wallet, screen an address or company, and pay the fee on Tempo. You get back the same signed attestation the API returns — settled live, in your browser. This is the premium instant-check tier; programmatic access for agents is priced lower.

Settles in pathUSD on Tempo · result is a verifiable Ed25519 attestation
What it checks

The facts software needs
before it moves money.

Call any check on its own, or run wallet and company together. Each returns a plain answer and a signature you can keep.

i.

Sanctions screening

Check a wallet address against live US/EU/UN sanctions data before you send funds to it. A clear flag — sanctioned or not — signed and timestamped.

GET /screen/:address
ii.

UK company verification

Look up a UK company by number: whether it's active, and who really controls it — the people-with-significant-control behind it.

GET /company/:number
iii.

OFAC name screening

Screen a person or company name against the official US Treasury OFAC sanctions list, with fuzzy matching across aliases. Confidence-scored candidates — a screening aid, not a verdict.

GET /screen-name?name=
iv.

US company verification

Look up an SEC-registered US public company by ticker, CIK, or name — registered entity, industry, state of incorporation, and latest filing, via SEC EDGAR. Public companies only.

GET /us-company?q=
What it doesn't claim A clean wallet and a real company are two separate facts. This service never asserts that a given wallet belongs to a given company — no free data source proves that link, and every bundled response says so plainly. Knowing exactly where a check's authority ends is the point.
How a call works

Request, pay, verify —
in one round trip.

Payment rides on the HTTP 402 standard over MPP. An agent handles the whole exchange on its own; no checkout, no keys to wire.

i

Call the endpoint

The agent requests a check. With no payment attached, the server answers with a price.

402 Payment Required
ii

Settle in stablecoin

The agent pays the few-cent fee on Tempo and retries with proof of payment attached.

Authorization: Payment
iii

Get a signed result

The server verifies payment, runs the check, and returns the answer with a signature and receipt.

200 OK · attestation
The difference

An answer you can defend.

In compliance, a check that can't be proven later barely counts. Every response is signed, so it becomes evidence — not just a JSON blob someone could have typed.

i.

Signed at the millisecond

Each result carries an Ed25519 signature over the data and a strict timestamp. It states exactly what was true, exactly when.

ii.

Anyone can verify it

The public key is published at a well-known URL. An auditor checks the signature themselves — they never have to call us or trust us. Verify one in your browser →

iii.

Tamper-evident by design

Change a single field of a stored result and verification fails. The signature only holds for the exact bytes we returned.

verify.mjs
// verify a stored attestation — no call back to us
import crypto from 'node:crypto'

const input = JSON.stringify({
  data:      envelope.data,
  issued_at: envelope.attestation.issued_at,
  key_id:    envelope.attestation.key_id,
})

const ok = crypto.verify(
  null,
  Buffer.from(input),
  publicKeyPem,                  // from /.well-known/attestation-key
  Buffer.from(envelope.attestation.signature, 'base64url'),
)

// ok === true  →  clean at that exact moment, provably
Built on the same spine

From a single check to a
documented investigation.

The same signed screening powers a small suite of investigation tools. Trace a wallet's counterparties, keep a watchlist, and turn what you find into evidence someone else can verify.

i.

Cluster graph

Paste a wallet and expand outward through its counterparties. Every wallet that enters the graph is screened against the sanctions oracle and flagged in place.

ii.

Wallet tracker

Add addresses to a watchlist. They're re-screened on a schedule, and any change in status — a counterparty designated after you dealt with them — is flagged.

iii.

Case files

Collect screened wallets into a named investigation with your own notes, then export the whole case as a signed report — PDF, JSON, or CSV — that verifies without us.

Pricing

Start per call. Scale on watching.

A single check is cheap and keyless — pay a few cents, get a signed result. The recurring value is continuous watching: your counterparties re-screened every day, with a signed alert the moment one changes.

Pay-as-you-go
For agents & trials
$0.01–$0.05 / call
Keyless, per-call checks over MPP on Tempo or x402 on Base. No account, no commitment — the fastest way to try it or wire it into an agent.
  • All five checks, each signed
  • On-chain anchoring for $0.01
  • No key, no sign-up
See per-call prices
Sanctions check$0.01
OFAC name screen$0.02
UK company check$0.05
US company check$0.05
Combined diligence$0.05
Enterprise
Enforced & managed
Custom / from $1k mo
Managed, attested blacklist policies for token issuers on Tempo (TIP-403). We curate and prove the screened list; you keep the on-chain admin key. Higher volumes, priority support.
  • Managed TIP-403 policy curation
  • Signed attestation per list change
  • You hold the admin key
  • Priority support
Subscriptions are priced on counterparties watched, not calls — a single check is near-free to serve; continuous watching is where the recurring risk (and the cost of trust) lives. Built on the free Chainalysis sanctions oracle, the public OFAC SDN list, UK Companies House, and SEC EDGAR open data: the fee is for the infrastructure, not the data.
Counterparty watching

Not a developer? Start here.

Continuous counterparty watching is in early access. Leave an email and I'll onboard you personally — or reach out directly if you'd rather talk first.

Get early access

Daily re-screening of your counterparties, a signed alert the moment one changes, and an audit-trail export your compliance team can forward upward. Tell me who you're watching and I'll onboard you personally.

Or email me directly at support@onchaindiligence.com
For developers

Two ways in. Same checks.

Call it as a plain HTTP endpoint paid in pathUSD on Tempo, or plug it into an agent as MCP tools paid in USDC on Base. Same checks, same signed results.

HTTP API

Call it directly

Any language, any agent. Hit the endpoint, handle the 402, get a signed result back.

$ npx mppx https://api.onchaindiligence.com/screen/0x7a3b…
MCP — paid agent tools

Plug into an agent

A live remote MCP server: an agent discovers three paid tools — screen_wallet, verify_uk_company, diligence — and pays per call in USDC via x402. No key, no account.

https://mcp.onchaindiligence.com/mcp

Check it. Prove it.

Give your agents a compliance check that holds up after the fact.