AgentEconomy Compliance API

Pay-per-call KYC, AML, and regulatory risk assessment for AI agents. Priced in USDC on Base via the x402 protocol. Real OFAC SDN and UN Security Council sanctions data — no API keys, no monthly subscription.

Live x402 v2 Base mainnet USDC Streamable-HTTP MCP

Discovery & spec

Services

KYC identity check

$0.01 USDC

Screen a person or entity against OFAC SDN and UN consolidated sanctions lists. Returns verification status, risk level (low/medium/high/critical), score 0–100, and per-match detail. Uses Jaro–Winkler fuzzy name matching.

POST /v1/kyc/check

AML sanctions screening

$0.05 USDC

Full sanctions + jurisdiction risk screening with an approve/review/reject recommendation. Accepts optional transaction context for audit trail.

POST /v1/aml/screen

Regulatory risk report

$0.10 USDC

Composite report covering sanctions screening and multi-jurisdiction risk analysis. Designed for higher-stakes onboarding decisions.

POST /v1/risk/report

On-chain wallet screening

$0.05 USDC

Screen a wallet address directly: OFAC sanctioned-address match plus on-chain exposure analysis — sanctioned counterparties, known-mixer (e.g. Tornado Cash) exposure, and flagged token holdings across Ethereum and Base. No entity name required.

POST /v1/wallet/screen

Wallet monitoring

$0.50 USDC / 30 days

Register a wallet for ongoing monitoring across Ethereum and Base. Get alerts when it transacts with an OFAC-sanctioned address or known mixer. Poll for findings free at GET /v1/monitor/alerts.

POST /v1/monitor/register

Quick start — direct HTTP call with x402-fetch

The TypeScript example below uses Coinbase's x402-fetch to wrap the standard fetch. It transparently handles the 402 challenge: the wrapper sees the 402, signs a USDC transfer with your viem wallet, and retries with an X-PAYMENT header. Your code just awaits a normal Response.

// npm install x402-fetch viem
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http, type Hex } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const account = privateKeyToAccount(process.env.PRIVATE_KEY as Hex);
const wallet = createWalletClient({ account, chain: base, transport: http() });

// Wrap fetch — pays up to $1 per call from this wallet
const payFetch = wrapFetchWithPayment(fetch, wallet, BigInt(1_000_000)); // 1 USDC = 1e6 in 6-decimal units

const res = await payFetch("https://api.netbrainis.co.za/v1/kyc/check", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    entity_name: "John Doe",
    country: "US",
    wallet_address: "0x1234...5678",
  }),
});

const result = await res.json();
console.log(result);
// => { status: "verified", risk_level: "low", score: 15, sanctions_match: false, ... }
What just happened. The first request returned 402 Payment Required with an x402 challenge in the body listing the price, network, asset, and pay-to address. x402-fetch signed an EIP-3009 USDC transfer with your viem wallet, encoded it as an X-PAYMENT header, and replayed the request. The compliance API verified the payment via a facilitator and ran the KYC check. The settled transaction hash is returned in the X-Payment-Tx response header.

Calling via MCP — for OpenAI & Claude agents

The same three operations are exposed as MCP tools at /mcp (streamable-http transport). The MCP server is a thin proxy — it forwards the caller's X-PAYMENT header to the underlying API. This keeps the compliance service scoped to compliance and lets the agent operator hold the wallet.

Anthropic Messages API (Claude)

// The MCP server is added via the mcp_servers parameter on Anthropic's API.
// Your agent middleware injects X-PAYMENT on each MCP call so Claude doesn't
// need to know anything about x402.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();

const response = await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 1024,
  mcp_servers: [{
    type: "url",
    url: "https://api.netbrainis.co.za/mcp",
    name: "compliance",
    // Headers injected on every MCP request — produced by your x402 signer.
    authorization_token: undefined,
    headers: { "X-PAYMENT": await signX402ChallengeOnce(wallet) },
  }],
  messages: [{ role: "user", content: "Screen 'Acme Corp' for sanctions." }],
});

OpenAI Responses API

// OpenAI's Responses API accepts remote MCP servers via the tools array.
import OpenAI from "openai";
const openai = new OpenAI();

const response = await openai.responses.create({
  model: "gpt-5",
  tools: [{
    type: "mcp",
    server_label: "compliance",
    server_url: "https://api.netbrainis.co.za/mcp",
    headers: { "X-PAYMENT": await signX402ChallengeOnce(wallet) },
  }],
  input: "Screen 'Acme Corp' for sanctions.",
});
Per-call vs per-session payment. A signed X-PAYMENT header authorizes one settlement. For multi-call sessions, use an x402 middleware layer (e.g. a small proxy in front of the MCP server, or x402-fetch wrapping your HTTP client) that signs a fresh header on each tool invocation. Coinbase's reference clients ship with this loop built in.

On-chain compliance oracle (Ethereum mainnet)

Companion smart-contract layer for tokenized assets. Off-chain compliance results are signed as EIP-712 attestations and can be submitted on-chain by anyone — the operator pays zero gas.

Why x402 + MCP

x402 turns the dormant HTTP 402 status into a working payment protocol. No API keys to provision, no usage-based bills to reconcile, no per-customer onboarding. An agent with a funded wallet can transact with this service in milliseconds, the first time it discovers us. The same model scales from a single dev experiment to a production fleet of autonomous agents.

The MCP layer is there so Claude- and OpenAI-native agents can use the service without writing HTTP plumbing — they call kyc_check the same way they'd call weather or web_search. The caller-funded payment model preserves a clean separation: this server only does compliance.