Metadata-Version: 2.4
Name: rulhub
Version: 0.1.0
Summary: RulHub SDK — Trade finance compliance API client
Project-URL: Homepage, https://rulhub.com
Project-URL: Documentation, https://api.rulhub.com/swagger
Project-URL: Repository, https://github.com/ripclass/RulEngine
Project-URL: Issues, https://github.com/ripclass/RulEngine/issues
Author-email: Enso Intelligence Labs <api@rulhub.com>
License-Expression: MIT
Keywords: api,compliance,icc,letter-of-credit,sanctions,trade-finance,ucp600
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: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Financial
Classifier: Typing :: Typed
Requires-Python: >=3.8
Requires-Dist: requests>=2.28.0
Description-Content-Type: text/markdown

# RulHub Python SDK

Trade finance compliance API — validate documents against 5,400+ ICC rules with AI-powered semantic matching.

## Install

```bash
pip install rulhub
```

## Quick Start

```python
from rulhub import RulHub

client = RulHub(api_key="ak_your_key_here")

# Validate a letter of credit
result = client.validate(
    rules="ucp600",
    document_type="lc",
    document={
        "beneficiary_name": "ABC Trading Co",
        "amount": 50000,
        "currency": "USD",
        "goods_description": "1000 MT Thai White Rice 5% Broken",
        "expiry_date": "2026-06-30",
    }
)

print(f"Score: {result['score']:.0%}")
print(f"Compliant: {result['compliant']}")

for d in result["discrepancies"]:
    print(f"  [{d['severity']}] {d['finding']}")
    if d.get("recommendation"):
        print(f"    Fix: {d['recommendation']}")
```

## Validate Multiple Documents

```python
result = client.validate_set(documents=[
    {"type": "lc", "fields": {"amount": 50000, "currency": "USD"}},
    {"type": "invoice", "fields": {"total_amount": 49500, "currency": "USD"}},
])

for d in result["cross_document_discrepancies"]:
    print(f"  {d['finding']} ({', '.join(d['documents_involved'])})")
```

## Sanctions Screening

```python
result = client.screen_sanctions(entity="Acme Corp", country="IR")
print(f"Clear: {result['clear']}, Risk: {result['risk_level']}")
```

## All Methods

| Method | Description |
|--------|-------------|
| `validate()` | Single document validation |
| `validate_set()` | Multi-document cross-doc validation |
| `screen_sanctions()` | OFAC/EU/UN/UK sanctions screening |
| `screen_entity()` | UBO/PEP/shell company risk |
| `screen_export_controls()` | EAR/ITAR/EU dual-use |
| `screen_tbml()` | FATF money laundering indicators |
| `screen_route()` | Route sanctions + transport |
| `search_rules()` | Keyword search across all rules |
| `lookup_rules()` | Structured rule retrieval |
| `get_requirements()` | Document field requirements |
| `get_bank_profiles()` | Bank behavior data |
| `get_country_requirements()` | Country compliance rules |
| `get_fta_origin()` | FTA eligibility rules |
| `get_commodities()` | Commodity compliance |

## Sign Up

Free plan: 50 validations/month. No credit card.

```bash
curl -X POST https://api.rulhub.com/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@co.com","password":"secure123","company_name":"Your Co"}'
```

**API Docs:** https://api.rulhub.com/swagger | **Website:** https://rulhub.com | **By:** Enso Intelligence Labs, Inc.
