Data & analysis

VeraData — LATAM Compliance API

Try it

Sanctions screening (OFAC+UN+EU+UK, 59k entries), KYB bundles for CO/MX/BR/CL/PE, LATAM central bank rates (TRM/TIIE/Selic/dólar blue), business registry lookup and AI market intelligence. x402 v2 micropayments in USDC — no API key, no account. Trial: X-TRIAL: true header.

What it does

Verified Latin American compliance data delivered as x402 v2 micropayments. No API key, no SDK, no subscription — one POST request, one USDC micropayment, one verified response with full audit trail.

The skill document

VeraData — LATAM Compliance API v2.3

Verified Latin American compliance data delivered as x402 v2 micropayments. No API key, no SDK, no subscription — one POST request, one USDC micropayment, one verified response with full audit trail.

Built on FastAPI + Supabase + Render. Every paid response generates an immutable audit record compliant with EU AI Act Art.12/13 and FATF R16.


⚠️ Transparency Notice (Read Before Installing)

1. Data Transmission

Requests are transmitted to Render infrastructure (AWS us-east) via FastAPI.

What VeraData stores: Endpoint, country, network, payer wallet, ip_hash, audit_hash, timestamp — never raw query content beyond entity names for sanctions lookup.

Storage: Supabase PostgreSQL (private audit ledger, vera_audit table).

Sanctions data: Pre-seeded from official sources (OFAC SDN, UN, EU, UK HMT) via cron — no external calls during your request.

2. Payment Model — x402 v2

VeraData uses the x402 v2 protocol for autonomous micropayments. The standard flow:

  1. Agent makes request without payment header → receives HTTP 402 with PAYMENT-REQUIRED header (base64 JSON)
  2. Agent decodes the header to get payment parameters
  3. Agent signs EIP-3009 TransferWithAuthorization with its own USDC wallet
  4. Agent encodes signature as base64 JSON → this is the PAYMENT-SIGNATURE value
  5. Agent retries the same request with PAYMENT-SIGNATURE: header
  6. VeraData verifies via CDP/PayAI facilitator → returns 200 with data

VeraData never has access to agent private keys. Payment signing happens entirely client-side.

3. Audit Trail

Every paid call generates an audit_hash (SHA-256 chain) stored in vera_audit. The hash chain is: query_hash → event_hash → chain_hash. Audit records are never deleted — they are the compliance proof.

4. Trial Mode

Add X-TRIAL: true to any POST request for 3–5 free calls per endpoint per IP per 24 hours. No wallet required for trial.

5. Operator Verification


Endpoints & Pricing

EndpointMethodPriceDescription
/sanctions/quickPOST$0.01 USDCQuick OFAC-only screening — cheapest entry point
/sanctionsPOST$0.05 USDCFull screening OFAC+UN+EU+UK (59,454 entries)
/sanctions/zkpPOST$0.05 USDCZKP privacy screening — GDPR Art.25 compliant
/entityPOST$0.03 USDCEntity enrichment RUES/CNPJ/RFC
/registryPOST$0.05 USDCBusiness registry full record
/contextPOST$0.10 USDCAI market intelligence (Claude Sonnet)
/ratesPOST$0.02 USDCLATAM central bank rates (TRM/TIIE/Selic/UF/dólar blue)
/rates/streamGET$0.02 USDC/eventSSE streaming rates — use /rates/stream/token first
/solutions/kyb-complete-coPOST$0.15 USDCFull KYB bundle Colombia
/solutions/kyb-complete-mxPOST$0.15 USDCFull KYB bundle México
/solutions/kyb-complete-brPOST$0.15 USDCFull KYB bundle Brasil
/solutions/kyb-complete-clPOST$0.15 USDCFull KYB bundle Chile
/solutions/kyb-complete-pePOST$0.15 USDCFull KYB bundle Perú
/solutions/screening-globalPOST$0.08 USDCGlobal screening: GCC, Africa, India, SEA

Quick Start — Trial (No Payment)

curl -X POST https://api.veradata.dev/sanctions/quick \
  -H "Content-Type: application/json" \
  -H "X-TRIAL: true" \
  -d '{"name": "Nicolás Maduro"}'
curl -X POST https://api.veradata.dev/sanctions \
  -H "Content-Type: application/json" \
  -H "X-TRIAL: true" \
  -d '{"name": "PDVSA", "country": "VE"}'
curl -X POST https://api.veradata.dev/rates \
  -H "Content-Type: application/json" \
  -H "X-TRIAL: true" \
  -d '{"country": "CO"}'

x402 Payment Flow (Python)

import httpx, base64, json

BASE_URL = "https://api.veradata.dev"

async def call_veradata(endpoint: str, payload: dict, wallet_client) -> dict:
    """
    Full x402 v2 payment flow for any VeraData endpoint.
    wallet_client must implement sign_eip3009(amount, to, usdc_contract, valid_before, nonce) -> str
    """
    # Step 1: probe for 402
    r = await httpx.post(f"{BASE_URL}{endpoint}", json=payload)
    if r.status_code == 200:
        return r.json()

    if r.status_code != 402:
        raise Exception(f"Unexpected status: {r.status_code}")

    # Step 2: decode payment requirements
    header_b64 = r.headers.get("PAYMENT-REQUIRED")
    payment_req = json.loads(base64.b64decode(header_b64))

    # Step 3: sign EIP-3009
    accepts = payment_req["accepts"][0]  # pick Base or Solana
    signature = await wallet_client.sign_eip3009(
        amount=int(accepts["maxAmountRequired"]),
        to=accepts["paymentInfo"]["payTo"],
        usdc_contract=accepts["paymentInfo"]["extra"]["erc20Address"],
        valid_before=int(time.time()) + 300,
        nonce=secrets.token_hex(16),
    )

    # Step 4: encode and retry
    payment_header = base64.b64encode(json.dumps({
        "scheme": accepts["scheme"],
        "networkId": accepts["networkId"],
        "payload": signature,
    }).encode()).decode()

    r2 = await httpx.post(
        f"{BASE_URL}{endpoint}",
        json=payload,
        headers={"PAYMENT-SIGNATURE": payment_header},
    )
    return r2.json()

SSE Streaming — /rates/stream

SSE requires a pre-paid token because streaming connections cannot carry payment headers mid-stream.

Step 1 — Get a stream token (pays $0.02 USDC):

# Without payment — receive 402 with PAYMENT-REQUIRED header
curl -X POST "https://api.veradata.dev/rates/stream/token?country=CO"

# With payment — receive stream_token valid 5 minutes
curl -X POST "https://api.veradata.dev/rates/stream/token?country=CO" \
  -H "PAYMENT-SIGNATURE: "

Response:

{
  "stream_token": "abc123...",
  "country": "CO",
  "expires_in": 300,
  "stream_url": "https://api.veradata.dev/rates/stream?country=CO&stream_token=abc123..."
}

Step 2 — Connect to stream:

curl -N "https://api.veradata.dev/rates/stream?country=CO&stream_token=abc123..."

SSE Events:

  • event: rates — rate data payload
  • event: end — stream complete, includes trial_remaining_today
  • event: limit — trial exhausted, includes 7-step payment_flow instructions
  • event: error — fetcher error

Trial: 3 free events per IP per 24h without stream_token. After trial is exhausted, the event: limit payload contains exact payment instructions.


Sanctions Screening Response

{
  "status": "ok",
  "matches": [],
  "total_screened": 59454,
  "lists_checked": ["OFAC_SDN", "UN_CONSOLIDATED", "EU_CONSOLIDATED", "UK_HM_TREASURY"],
  "screening_timestamp": "2026-07-02T18:00:00Z",
  "audit_hash": "sha256:abc123...",
  "decision_ref": "vd_2026...",
  "eu_ai_act": {"art12_logged": true, "art13_compliant": true},
  "network": "base",
  "payer": "0x..."
}

matches: [] means clean — no sanctions hits found.

If matches is non-empty, each entry includes: list_name, entry_name, match_score, programs, country.


KYB Bundles — /solutions/kyb-complete-{country}

Combines sanctions + entity enrichment + registry lookup in a single atomic call.

Request:

{
  "company_name": "Bancolombia S.A.",
  "country": "CO",
  "registration_number": "890903938"
}

Response includes:

  • sanctions_result — full screening across all 4 lists
  • entity_data — enriched entity profile (RUES/CNPJ/RFC)
  • registry_record — full business registry extract
  • risk_score — composite risk 0.0–1.0
  • audit_hash — chain hash for compliance audit trail
  • eu_ai_act — Art.12/13 compliance flags

Countries: co (RUES), mx (RFC/SAT), br (CNPJ/Receita Federal), cl (RUT/SII), pe (RUC/SUNAT)


Rates Response

{
  "country": "CO",
  "currency": "COP",
  "rates": {
    "TRM": {"value": 4185.23, "unit": "COP/USD", "source": "Banco de la República"},
    "DTF": {"value": 12.45, "unit": "%", "source": "Banco de la República"}
  },
  "timestamp": "2026-07-02T18:00:00Z",
  "data_freshness": "live",
  "cache_age_seconds": 180
}

Countries: CO (TRM, DTF), MX (TIIE, tipo de cambio), BR (Selic, PTAX), CL (UF, TPM), PE (referencia BCRP), AR (dólar blue, oficial, MEP)


MCP Integration

VeraData exposes a full MCP server at https://api.veradata.dev/mcp.

# In your MCP client config:
{
  "mcpServers": {
    "veradata": {
      "url": "https://api.veradata.dev/mcp",
      "transport": "http"
    }
  }
}

Available MCP tools: sanctions_screen, entity_lookup, registry_search, get_rates, kyb_complete.


Error Responses

402 — Payment Required (no payment sent):

{
  "error": "Payment required",
  "payment_flow": ["1. Decode base64 PAYMENT-REQUIRED header", "..."],
  "trial": "Add X-TRIAL: true header for 3–5 free calls per IP per 24h"
}

Header PAYMENT-REQUIRED: is always present on 402 responses.

402 — Verification Failed:

{"error": "Payment verification failed — sign a FRESH EIP-3009 (new nonce) and retry"}

Header X-402-Reason: verification_failed helps agents distinguish this from "no payment".

429 — Trial Exhausted:

{"error": "Trial limit reached", "trial_limit": "3 calls per endpoint per IP per 24h"}

Compliance Coverage

StandardCoverage
EU AI Act Art.12Every paid call logged with audit_hash
EU AI Act Art.13Transparency metadata in every response
GDPR Art.25ZKP endpoint available — /sanctions/zkp
LGPD Art.46Brazilian entity data handled with appropriate safeguards
FATF R16Wire transfer screening via OFAC+UN lists
SARLAFT 2024Colombian AML screening patterns
ERC-8299sanctions_screening artifact_type registered

Known Limitations

  • Render Starter cold starts: First request after 15min inactivity may take 2–5s. Subsequent requests are fast.
  • Sanctions data freshness: Lists are updated via cron, not real-time. OFAC SDN typically updates within 24h of official publication.
  • Entity data availability: RUES/RFC/CNPJ data depends on official registry APIs — occasionally unavailable during source maintenance windows.
  • SSE stream_token: Single-use, 5-minute TTL. If the stream disconnects, purchase a new token.
  • x402 facilitator dependency: Payment verification uses CDP/PayAI. Circuit breaker activates after 3 failures (60s cooldown).

Resources

Related skills

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

More from teodorofodocrispin-cmyk

Browse all skills

Redact PII from text before sending it to an LLM, via a single HTTPS POST — pay per request on Solana or use the 50-request TRIAL.

by teodorofodocrispin-cmyk29 installs1 stars

Get structured competitive intelligence JSON for any named company, with market score and cited sources.

by teodorofodocrispin-cmyk10 installs1 stars

Pre-execution transaction safety check for autonomous AI agents from the SENTINEL trust oracle (sentinel-agent.dev). Before signing an on-chain transaction on Base, an agent gets a SAFE / UNSAFE / UNKNOWN verdict, a SENTINEL Score (0-100, AAA-D), and an ed25519-signed receipt. Pay-per-call via x402.

by teodorofodocrispin-cmyk