EU Compliance Tools for AI Agents

Pay per call in USDC on Base via the x402 protocol or the MCP endpoint. No account, no API key, no subscription, no minimum. Every answer carries its official source and data date.

Endpoints

ToolHTTP (x402)MCP toolPrice
Counterparty check (KYB)
VAT + sanctions + IBAN → traffic light
GET /x402/counterparty?name=…&vat=…&iban=… check_counterparty_eu$0.02
EU sanctions screening
AML / KYC name check
GET /x402/sanctions?name=…&country=AT screen_sanctions_eu$0.01
EU VAT rules engine
place of supply, reverse charge, EN 16931 codes
GET /x402/vat-rules?supplier=AT&customer=DE&b2b=true&type=service eu_vat_rules$0.003
EU VAT ID validation
live VIES register
GET /x402/vat/{vat_id} validate_vat$0.002
IBAN validation
checksum + structure
GET /x402/iban/{iban} validate_iban$0.002
Receipt / invoice extraction
photo or PDF → structured JSON, DACH-optimised
POST https://api.eucompliance.tools/x402/extract (multipart file) $0.02

How to pay (x402)

Call the endpoint. You get HTTP 402 with a payment-required header containing the payment requirements (scheme exact, network eip155:8453, asset USDC). Sign and repeat the call with the X-PAYMENT header — any x402 client SDK does this automatically. Settlement runs through the Coinbase facilitator; the payer needs no ETH for gas.

pip install "x402[evm]"

import requests
from x402.client import x402ClientSync
from x402.mechanisms.evm.exact.register import register_exact_evm_client
from x402.mechanisms.evm.signers import EthAccountSigner
from x402.http.clients.requests import wrapRequestsWithPayment

client = x402ClientSync()
register_exact_evm_client(client, EthAccountSigner(my_account), networks="eip155:8453")
session = wrapRequestsWithPayment(requests.Session(), client)

r = session.get("https://api.eucompliance.tools/x402/sanctions?name=Acme%20GmbH")
print(r.json())

MCP (Claude, Claude Code and other agents)

claude mcp add --transport http eu-compliance https://mcp.eucompliance.tools/mcp

Tools appear as validate_vat, validate_iban, screen_sanctions_eu, eu_vat_rules. Payment travels in-band in the tool call (_meta); an unpaid call returns machine-readable payment requirements.

What each tool answers

screen_sanctions_eu — screens a person or company name against the official EU consolidated financial sanctions list (Financial Sanctions Files, European Commission), re-indexed daily. Fuzzy matching tolerates transliteration and spelling variants. Returns each match with score, sanction programme, EU reference number, regulation, countries, birth dates, alternative names and the publication URL — plus the list generation date, so every result is auditable. ~6,000 listed entities, ~30,000 name variants.
eu_vat_rules — decides how to invoice a cross-border transaction inside and outside the EU: place of supply, whether VAT is charged, the standard rate, and the codes an e-invoice needs — EN 16931 VAT category code (BT-151) and exemption reason code (BT-121), e.g. AE/VATEX-EU-AE for reverse charge, K/VATEX-EU-IC for intra-Community supply, G for export. Includes ready-to-use invoice wording in English and German and the article of VAT Directive 2006/112/EC. Built for XRechnung, ZUGFeRD, Peppol BIS and OSS workflows.
validate_vat — checks an EU VAT identification number against the live VIES register and returns the registered name and address where the member state publishes them. validate_iban — checks IBAN checksum and country structure. extract — turns a receipt or invoice photo/PDF into structured JSON (vendor, date, total, VAT breakdown, line items), optimised for German-language documents.

Machine-readable