Metadata-Version: 2.4
Name: eucompliance-tools
Version: 0.2.0
Summary: EU compliance checks without an account: VAT ID via VIES, IBAN, sanctions lists, company registers, AI Act Article 50 - with a signed receipt on every answer
Project-URL: Homepage, https://eucompliance.tools
Project-URL: Documentation, https://eucompliance.tools/llms.txt
Author: Patrick Kaufmann
License-Expression: MIT
Keywords: agent-spend,agents,aml,bookkeeping,compliance,eu,iban,kyc,market-data,mcp,onchain,sanctions,time-series,vat,vies,x402
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.9
Provides-Extra: x402
Requires-Dist: eth-account>=0.13; extra == 'x402'
Requires-Dist: requests>=2.31; extra == 'x402'
Requires-Dist: x402>=2.0; extra == 'x402'
Description-Content-Type: text/markdown

# eucompliance-tools

**EU compliance checks without an account.** VAT IDs against the live VIES register, IBANs, sanctions lists, company registers, AI Act Article 50 — and every answer carries a signed receipt.

```bash
pip install eucompliance-tools
```

```python
from eucompliance_tools import vat, iban, sanctions

vat("ATU16170006")                    # format, checksum, and the official VIES register
iban("AT611904300234573201")          # checksum, country structure, bank
sanctions("Muster Person")            # EU, UN and UK consolidated lists
```

No signup, no key, no card. 100 free calls a day.

## Why the receipt matters

Every answer carries a signed record over its own content. Anyone can check it later — free, no account:

```python
from eucompliance_tools import vat, verify

answer = vat("ATU16170006")
verify(answer)
# {'valid': True, 'content_unchanged': True, 'signature_valid': True, ...}
```

If a single field was altered after the check ran, `valid` is `False` and the verdict carries `receipt_tampered`. That turns a compliance result into a document you can put in a file, instead of a claim someone has to trust.

The failure codes follow the taxonomy adopted by CAAP-1, so a bookkeeping consumer can route on them directly.

## What is covered

| Function | What it does |
|---|---|
| `vat(id)` | EU VAT ID: format, checksum, live VIES lookup with registered name and address |
| `iban(nr)` | IBAN checksum, country structure, bank identification |
| `sanctions(name)` | EU Commission consolidated list, UN, UK — in one call |
| `company(country, name=…)` | Official national business registers |
| `ai_disclosure(...)` | AI Act Article 50 disclosure and provenance record |
| `verify(answer)` | Check any receipt — always free |
| `catalog()` | The full machine-readable catalogue with prices |

## Beyond the free tier

The free tier is 100 calls a day and needs nothing. Past that there are two ways, and neither needs an account.

**Pay per call in USDC** (x402 on Base — the payer needs no ETH, gas is sponsored):

```bash
pip install eucompliance-tools[x402]
```

```python
from eth_account import Account
from eucompliance_tools import paid

account = Account.from_key("0x…")
paid("preflight", params={"chain": "base", "to": "0x…"}, account=account)
```

**Or a key** with 100 calls included, from <https://eucompliance.tools/kaufen> — email in, key out, no card:

```python
import os
os.environ["EUCOMPLIANCE_API_KEY"] = "…"
```

## For AI Act Article 50, use the dedicated package

`ai_disclosure()` here is the direct call. For production use [`eucompliance-ai-act`](https://pypi.org/project/eucompliance-ai-act/) instead — it hooks into your existing LLM client in one line, hashes the output locally so your content never leaves your system, and attaches the disclosure to every generation:

```python
from eucompliance_ai_act import wrap
client = wrap(OpenAI(), deployer="Muster GmbH")
```

## Honest limits

These checks read official sources and report what those sources say at the moment you ask. VIES goes down; a register can be stale; a sanctions hit on a common name needs a human to look at it. The receipt proves what we returned and when — it does not turn a screening hit into a legal judgement.

Technical service, not legal advice.

MIT licensed. Operated by Patrick Kaufmann, sole proprietor in Vienna, Austria.
