Skip to content

Compliance Oracle API

Multi-layer compliance oracle running before every payment: sanctions screening, behavioural analysis, counterparty network risk, and Verification of Payee (FATF R16). Signal weights self-calibrate per cohort. Ambiguous decisions route through an AI reasoning layer. No human queues.

Base URL: https://compliance.untitledfinancial.com


Verify the identity of a payment counterparty before settlement. Costs $0.075 USDC via x402 on Base mainnet — pay via the X-PAYMENT header.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/vop/verify \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <base64-x402-payload>" \
-d '{
"walletAddress": "0xabc...",
"submittedName": "Deutsche Bank AG",
"submittedLei": "7LTWFZYICNSX8D621K86"
}'

Request fields:

FieldTypeRequiredDescription
walletAddressstringYesWallet address of the counterparty
submittedNamestringYesName as submitted by the payment initiator
submittedLeistringNoLEI of the counterparty (bypasses name matching if matched)

Response:

{
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"result": "LEI_MATCH",
"proceedSafe": true,
"score": 100,
"resolvedBy": "LEI_EXACT_MATCH",
"registeredName": "Deutsche Bank Aktiengesellschaft",
"registeredLei": "7LTWFZYICNSX8D621K86",
"leiStatus": "ACTIVE",
"message": "LEI verified and active. Identity confirmed.",
"attestation": {
"fatfR16Compliant": true,
"regulatoryNote": "FATF R16 VoP satisfied via GLEIF-verified LEI exact match."
}
}

Resolution tiers:

ResultScoreProceeds?Meaning
LEI_MATCH100LEI matched exactly — name check skipped
VERIFIED90–100Strong name match
PROCEED_HIGH_CONFIDENCE75–89Good match, minor discrepancy noted
PROCEED_FLAGGED55–74Moderate match, flagged in attestation + AI assessment
PROCEED_UNVERIFIED35–54Low match, marked unverified + AI assessment
NOT_REGISTEREDWallet not in registry — no identity to verify
LEI_INACTIVE100LEI matched but lapsed — warns counterparty
BLOCKED<35Name mismatch below threshold — payment blocked

The only hard block is BLOCKED — when names are so dissimilar the payment is likely misdirected. Every other result proceeds, with the degree of confidence recorded in the attestation.

Gray zone AI assessmentPROCEED_FLAGGED and PROCEED_UNVERIFIED results include a grayZoneReasoning field:

{
"grayZoneReasoning": {
"assessment": "LIKELY_CORRECT",
"confidence": "HIGH",
"likelyCause": "Legal suffix difference — 'GmbH' vs 'GmbH & Co. KG'",
"rationale": "The submitted name is a common shortened form of the registered legal name, consistent with standard German entity naming conventions.",
"proceedRecommendation": "PROCEED",
"processedAt": 1748123456
}
}
FieldValuesMeaning
assessmentLIKELY_CORRECT / UNCERTAIN / LIKELY_WRONGAI judgment on whether the discrepancy is a legitimate name variant
confidenceHIGH / MEDIUM / LOWConfidence in the assessment
likelyCausestringShort phrase — most probable reason for the discrepancy
rationalestring1–2 sentence explanation
proceedRecommendationPROCEED / PROCEED_WITH_CAUTION / MANUAL_REVIEWCompliance recommendation

Advisory only — never overrides proceedSafe. Timeout fallback: field omitted if AI call fails.


Free. Returns the registered entity for a wallet address.

Terminal window
curl https://compliance.untitledfinancial.com/vop/lookup/0xabc...

Response:

{
"walletAddress": "0xabc...",
"legalName": "Deutsche Bank Aktiengesellschaft",
"lei": "7LTWFZYICNSX8D621K86",
"leiStatus": "ACTIVE",
"aliases": ["Deutsche Bank", "DB"],
"registeredAt": 1747267200
}

Returns 404 if the wallet is not registered.


GET /vop/history/:wallet — Audit history

Section titled “GET /vop/history/:wallet — Audit history”

Free. Returns the last 50 VoP checks for a wallet.

Terminal window
curl https://compliance.untitledfinancial.com/vop/history/0xabc...

Free. Returns GLEIF data + all wallets registered under a given LEI.

Terminal window
curl https://compliance.untitledfinancial.com/lei/7LTWFZYICNSX8D621K86

POST /register — Register a wallet (admin)

Section titled “POST /register — Register a wallet (admin)”

Bearer-authenticated with ORACLE_SIGNING_KEY. LEI is optional — omit it to register as SELF_DECLARED. Provide it to verify against GLEIF and register as GLEIF_VERIFIED.

Registration types:

TypeLEI requiredVoP scoreUse case
SELF_DECLAREDNoUp to 100 (name match)Self-onboarding without LEI
GLEIF_VERIFIEDYesUp to 100 (LEI match)Full institutional verification

You can register as SELF_DECLARED now and upgrade to GLEIF_VERIFIED later by resubmitting with an LEI.

Terminal window
# SELF_DECLARED — no LEI required
curl -X POST https://compliance.untitledfinancial.com/register \
-H "Authorization: Bearer <signing-key>" \
-H "Content-Type: application/json" \
-d '{
"walletAddress": "0xabc...",
"legalName": "Acme Corp",
"country": "US",
"aliases": ["Acme"]
}'
# GLEIF_VERIFIED — with LEI
curl -X POST https://compliance.untitledfinancial.com/register \
-H "Authorization: Bearer <signing-key>" \
-H "Content-Type: application/json" \
-d '{
"walletAddress": "0xabc...",
"lei": "7LTWFZYICNSX8D621K86",
"legalName": "Deutsche Bank AG",
"aliases": ["Deutsche Bank", "DB"]
}'

DELETE /register/:wallet — Deactivate (admin)

Section titled “DELETE /register/:wallet — Deactivate (admin)”

Bearer-authenticated. Marks the registration inactive — does not delete audit records.


GET /.well-known/x402 — Payment discovery

Section titled “GET /.well-known/x402 — Payment discovery”

Machine-readable x402 payment requirements for autonomous agents. Call once and cache.

{
"version": 1,
"endpoints": {
"POST /vop/verify": {
"price": { "amount": "75000", "currency": "USDC", "decimals": 6 },
"network": "base",
"facilitator": "https://x402.org/facilitator"
},
"POST /stream/open": {
"variableAmount": true,
"minUsdc": 0.01,
"maxUsdc": 10000,
"unitTypes": ["second", "token", "call", "byte"],
"network": "base",
"facilitator": "https://x402.org/facilitator",
"description": "Open a streaming micropayment session. Pay upfront for a credit bucket; service ticks units against the balance."
}
}
}

Machine-readable schema.


RegulationStatus
FATF R16 (June 2025)✅ Satisfied when LEI match or score ≥ 75
SEPA VoP (Oct 2025)✅ Name matching + LEI verification
EU MiCA Article 68✅ Travel Rule identity verification
US GENIUS Act✅ Stablecoin transfer identity requirements
MiFID II✅ Counterparty identity audit trail

VoP checks are priced at $0.075 USDC per call. The X-PAYMENT header carries a base64-encoded payment payload — settlement is verified atomically by the Coinbase x402 facilitator before the result is returned.

Query /.well-known/x402 to get payment requirements programmatically.

For agents integrated via the Integration API, this cost is bundled into the integration fee — no separate x402 payment required.


Five compliance layers run before every payment. Internal-only — called by the Integration API; direct access requires X-Internal-Key.

Screen a wallet before settlement. Returns a risk score, risk tier, action, and full signal breakdown.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/aml/screen \
-H "X-Internal-Key: <internal-key>" \
-H "Content-Type: application/json" \
-d '{
"wallet": "0xabc...",
"counterparty": "0xdef...",
"amount": 50000,
"currency": "USDC",
"paymentId": "pay_xyz",
"direction": "SEND"
}'

Response:

{
"wallet": "0xabc...",
"riskScore": 18,
"riskTier": "LOW",
"action": "PROCEED",
"signals": [],
"sanctions": { "hit": false },
"profile": {
"maturity": "ESTABLISHED",
"txCount": 247,
"txVolumeAvg": 42000,
"riskScore": 12
},
"paymentId": "pay_xyz",
"checkedAt": 1748123456
}

Risk tiers and actions:

ScoreTierAction
0–24LOWPROCEED
25–49MEDIUMPROCEED
50–74HIGHFLAG → AI reasoning pass
75–100CRITICALBLOCK (immediate)

Sanctions hit always → BLOCK regardless of behavioural score.

FLAG tier — AI reasoning pass

When action is FLAG (riskScore 50–74), the response includes a reasoning field from an AI reasoning pass:

{
"reasoning": {
"recommendation": "PROCEED_WITH_REVIEW",
"confidence": "HIGH",
"rationale": "Single marginal signal on a mature wallet with 247 prior transactions. Pattern is not consistent with structuring or layering.",
"keyFactors": ["established profile", "single low-severity signal", "no sanctions exposure"],
"processedAt": 1748123456
}
}

If recommendation is ESCALATE_TO_BLOCK, action is overridden to BLOCK in the response. Advisory otherwise.

Signal weights — autonomous cohort calibration

Signals are scored using per-cohort weights that calibrate independently based on observed payment data, so a first-time counterparty and an established, high-volume one are screened differently:

CohortCalibration behaviour
UNKNOWNElevated caution — no prior history
NEWElevated caution — limited history
DEVELOPINGGlobal baseline weights
ESTABLISHEDReduced caution on signals with a strong track record

Weights recalibrate periodically against a minimum sample size and drift-safety check. Sanctions-correlated signals are never reduced by calibration, regardless of cohort. Exact weight values, thresholds, and calibration cadence are proprietary.


Returns the behavioural profile for a wallet — maturity, rolling stats, risk score.

Terminal window
curl https://compliance.untitledfinancial.com/aml/profile/0xabc... \
-H "X-Internal-Key: <internal-key>"

Profile maturity:

MaturityThreshold
UNKNOWNNo prior transactions
NEW< 10 transactions
DEVELOPING10–99 transactions
ESTABLISHED≥ 100 transactions

Returns the last 50 AML events (WARNING and above) for a wallet.

Terminal window
curl https://compliance.untitledfinancial.com/aml/events/0xabc... \
-H "X-Internal-Key: <internal-key>"

Entity-level ESG scores are computed by the Compliance Oracle and applied automatically on every payment. Direct access is free.

Returns live E, S, G scores for an entity by LEI. Cache TTL: 7 days.

Terminal window
# Basic — returns score JSON
curl "https://compliance.untitledfinancial.com/esg/score/7LTWFZYICNSX8D621K86?name=Deutsche+Bank+AG"
# With AI narration — adds plain-language interpretation field
curl "https://compliance.untitledfinancial.com/esg/score/7LTWFZYICNSX8D621K86?name=Deutsche+Bank+AG&narrate=true"

Parameters:

ParameterRequiredDescription
nameYes (unless entity is registered)Legal name — used for regulatory data lookups
countryNoISO 2-letter country code (default: US)
leiStatusNoGLEIF LEI status (default: ISSUED)
refreshNotrue to bypass cache and recompute
narrateNotrue to add AI plain-language narration

Response:

{
"lei": "7LTWFZYICNSX8D621K86",
"entityName": "Deutsche Bank Aktiengesellschaft",
"composite": 74,
"environmental": 71,
"social": 68,
"governance": 85,
"feeTier": "GOOD",
"feeSurcharge": 0.0013,
"coverage": "FULL",
"computedAt": 1748123456,
"expiresAt": 1748728256,
"fromCache": false,
"narration": "Deutsche Bank scores 74/100, placing it in the Good tier. Governance is the strongest pillar — active LEI, strong regulatory standing, and a compliant jurisdiction. Environmental and social scores are solid but leave room for improvement, with the social pillar slightly below governance on occupational and labour metrics."
}

ESG fee surcharge tiers:

ScoreTierESG fee
85–100EXCELLENTLowest
70–84GOODLow
50–69AVERAGEModerate
30–49BELOW_AVERAGEElevated
0–29POORMaximum

AI narration (?narrate=true) — adds a narration string field: 2–3 sentences covering the overall picture, main pillar driver, and any notable risk or strength. ~$0.001 per call, 8s timeout, omitted on failure.


Returns the ESG score for a wallet’s registered entity. Wallet must be registered with a LEI.

Terminal window
curl "https://compliance.untitledfinancial.com/esg/score/wallet/0xabc...?narrate=true"

Returns 404 if the wallet is not registered or has no LEI.


Traverse the GLEIF beneficial ownership chain up to 3 levels (subject → direct parent → ultimate parent), with optional intermediates, and screen every node against the OpenSanctions global sanctions database. Returns FATF R.16 UBO attestation.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/compliance/ubo-chain \
-H "Content-Type: application/json" \
-d '{
"lei": "7LTWFZYICNSX8D621K86",
"deep": true
}'
FieldTypeDescription
leistring20-char GLEIF LEI of the subject entity
deepbooleanInclude intermediate ownership nodes (default false)

Response fields:

FieldDescription
resultCLEAR / REVIEW_REQUIRED / BLOCKED
chainArray of ownership nodes — each with LEI, name, role, jurisdiction, and sanctions screen result
sanctionsMatchesMatches at OpenSanctions score ≥ 0.70
fatfAttestationFATF R.16 UBO attestation — beneficial owners identified, sanctions status, jurisdiction risk
cachedAtKV cache timestamp (24h TTL)

Results are KV-cached per LEI for 24 hours. Requires re-run after ownership structure changes.


Screen an individual against the OpenSanctions PEP (Politically Exposed Person) dataset. Required for FATF R.12/13 Enhanced Due Diligence triggers.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/compliance/pep-screen \
-H "Content-Type: application/json" \
-d '{
"name": "Mario Draghi",
"country": "IT",
"position": "Former ECB President"
}'
FieldTypeDescription
namestringFull name of the individual
countrystringISO-2 country code (optional — narrows results)
positionstringKnown title or role (optional — used for match confidence)

Response fields:

FieldDescription
riskLevelHIGH / MEDIUM / LOW / NONE
pepMatchesMatches at OpenSanctions score ≥ 0.60, with position, country, and match confidence
eddRequiredtrue if FATF R.12/13 EDD is triggered
fatfR12FATF R.12 attestation
cachedAtKV cache timestamp (6h TTL)

Upcoming and in-effect regulatory obligations across MiCA, SFDR, CSRD, GENIUS Act, and FATF. Static reference updated with each DPX release.

Terminal window
curl https://compliance.untitledfinancial.com/compliance/regulatory-calendar

Returns 16 events with: framework, event name, effective date, jurisdictions, summary, and dpxAlignment — the specific DPX feature addressing each obligation.

Frameworks covered:

FrameworkCoverage
MiCAArticle 45 whitepaper, Article 72 ESG, Article 109 authorisation
SFDRArticle 8/9 fund classification, PAI indicators
CSRDAudit trail, double materiality, value chain
GENIUS ActStablecoin reserve, monthly attestation, VASP registration

Agent identity layer for the DPX settlement network. KYA maps AI agent actions back to a verifiable legal entity, satisfying FATF R.16 (Travel Rule originator identification) without document collection or manual review queues.

FATF R.16 requires identifying the originator — the human or legal entity instructing a payment. An AI agent is a payment initiation mechanism, not the originator (same as a payment terminal or automated cash management system). The owner entity registered with KYA is the originator. Three registration tiers scale compliance burden with settlement risk:

TierRequirementsDaily capVerification
ANONYMOUSAgent name only$1KNone — instant
REGISTEREDName + email (self-attested)$25KNone — instant
VERIFIEDActive GLEIF LEINo platform capAutomatic GLEIF API lookup — no documents

Legal basis:

  • FATF R.16 — owner entity registration satisfies originator identification requirement
  • MiCA Art. 45 / 72 — LEI explicitly accepted as entity identification
  • GENIUS Act — business entity attestation + payment stablecoin framework compliance satisfied at REGISTERED+

Register an agent. The tier is determined automatically from the fields provided.

Terminal window
# ANONYMOUS — instant, no fields required beyond name
curl -X POST https://compliance.untitledfinancial.com/agent/register \
-H "Content-Type: application/json" \
-d '{ "name": "procurement-agent-v1", "framework": "custom" }'
# REGISTERED — add ownerEntity + ownerEmail
curl -X POST https://compliance.untitledfinancial.com/agent/register \
-H "Content-Type: application/json" \
-d '{
"name": "treasury-agent",
"ownerEntity": "Acme Corp",
"ownerEmail": "[email protected]",
"framework": "custom",
"protocols": ["x402", "ap2"]
}'
# VERIFIED — add a GLEIF LEI. DPX calls the public GLEIF API and confirms ACTIVE status.
# No documents. No manual review. LEI issuers (LOUs) have already done identity verification.
curl -X POST https://compliance.untitledfinancial.com/agent/register \
-H "Content-Type: application/json" \
-d '{
"name": "treasury-agent",
"ownerEntity": "Acme Corp",
"ownerEmail": "[email protected]",
"ownerLei": "7LTWFZYICNSX8D621K86",
"framework": "custom",
"protocols": ["x402", "ap2"],
"mandate": {
"maxNotionalUsd": 5000000,
"dailyCapUsd": 10000000,
"currencyPairs": ["USD|EUR", "USD|GBP"],
"esgFloor": 50
}
}'

Response (VERIFIED):

{
"agentId": "agt_Xy9...",
"kyaLevel": "VERIFIED",
"kyaScore": 85,
"status": "ACTIVE",
"tierCaps": { "maxNotionalUsd": 5000000, "dailyCapUsd": 10000000 },
"leiVerified": true,
"leiEntityName": "Acme Corporation",
"tierNote": "LEI 7LTWFZYICNSX8D621K86 confirmed ACTIVE via GLEIF. Owner identity verified. No documents required. Institutional caps apply — mandate governs.",
"mandate": { "mandateId": "mnd_...", "ap2Compatible": true, ... }
}

Returns a signed 1-hour credential with effective spend caps and FATF attestation. Attach as X-Agent-Credential header on /settle requests.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/agent/agt_Xy9.../verify
{
"verified": true,
"kyaLevel": "VERIFIED",
"kyaScore": 85,
"credential": {
"agentId": "agt_Xy9...",
"issuedAt": 1751299200000,
"expiresAt": 1751302800000,
"mandateId": "mnd_...",
"attestation": {
"kyaLevel": "VERIFIED",
"ownerVerified": true,
"mandateActive": true,
"fatfCompliant": true,
"dailyCapUsd": 10000000,
"maxNotionalUsd": 5000000
},
"signature": "HMAC-SHA256 signed, 1h TTL"
}
}

Create or update a spend mandate for a REGISTERED or VERIFIED agent. ANONYMOUS agents must upgrade first. REGISTERED agent caps are clamped to the $25K tier limit; VERIFIED agents set their own with no platform ceiling.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/agent/mandate \
-H "Content-Type: application/json" \
-d '{
"agentId": "agt_Xy9...",
"maxNotionalUsd": 500000,
"dailyCapUsd": 2000000,
"counterpartyWhitelist": ["7LTWFZYICNSX8D621K86"],
"esgFloor": 45,
"ap2Compatible": true
}'

Retrieve agent record, current KYA level, score, and mandate.

Terminal window
curl https://compliance.untitledfinancial.com/agent/agt_Xy9...

Revoke an agent. Credential verification will return REVOKED immediately.

Terminal window
curl -X DELETE https://compliance.untitledfinancial.com/agent/agt_Xy9...

Tiers upgrade at registration time by providing additional fields. To upgrade an existing agent, re-register — a new agentId is issued. The registration response includes a _next field explaining the upgrade path when the agent is below VERIFIED.

To obtain a GLEIF LEI for your organization: gleif.org — LEIs are issued by Local Operating Units (LOUs), typically within 1–3 business days. Many financial institutions can also obtain an LEI on behalf of a client.


POST /vendor-risk — Composite vendor risk score

Section titled “POST /vendor-risk — Composite vendor risk score”

Single call that runs compliance screening and ESG scoring in parallel and returns a composite 0–100 risk score. Replaces separate calls to /compliance/screen and /esg/score for vendor onboarding or pre-payment diligence workflows.

Terminal window
curl -X POST https://compliance.untitledfinancial.com/vendor-risk \
-H "Content-Type: application/json" \
-d '{
"name": "Berlin Supplier GmbH",
"lei": "549300TRUWO2CD2G5692",
"wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"country": "DE",
"amount": 85000
}'

Request fields:

FieldTypeRequiredDescription
namestringYesVendor or entity name
leistringNoLegal Entity Identifier (improves accuracy)
walletstringNoOn-chain wallet address
countrystringNoISO 3166-1 alpha-2 country code
amountnumberNoTransaction amount in USD (used for context in scoring)

Response:

{
"vendorRiskScore": 82,
"riskTier": "LOW",
"recommendation": "Proceed — low risk. Standard monitoring applies.",
"entity": { "name": "Berlin Supplier GmbH", "lei": "549300TRUWO2CD2G5692" },
"breakdown": {
"complianceScore": 100,
"esgScore": 74,
"complianceWeight": 0.65,
"esgWeight": 0.35
},
"compliance": {
"verdict": "APPROVED",
"signals": [],
"sanctions": false,
"pep": false,
"fatfBlacklist": false
},
"esg": {
"score": 74,
"tier": "MODERATE",
"source": "esg.untitledfinancial.com"
},
"generatedAt": "2026-07-02T21:30:00Z",
"refreshAt": "2026-07-03T21:30:00Z"
}

Risk tiers:

ScoreTierRecommendation
≥ 80LOWProceed — standard monitoring
60–79MODERATEProceed with enhanced monitoring
35–59ELEVATEDManual review recommended
< 35HIGHBlock or escalate

Scoring formula: vendorRiskScore = (complianceScore × 0.65) + (esgScore × 0.35)

Compliance scores: BLOCKED = 0, FLAGGED = 35, APPROVED = 100. Deductions applied for sanctions exposure, PEP linkage, and FATF grey/blacklist status. ESG defaults to 50 (neutral) when no wallet or LEI is supplied.

No API key required. No x402 payment required.


Three self-contained HTML widgets for checkout and onboarding flows. No API key, no backend — paste into any page.

WidgetURLWhat it does
Sanctions checkGET /widget/sanctionsInput a wallet address or entity name — returns APPROVED/FLAGGED/BLOCKED with risk signals
ESG score badgeGET /widget/esgInput a company name or LEI — returns score 0–100 with E/S/G breakdown
Corridor stabilityGET /widget/corridorsDisplays live OPTIMAL/CAUTION/ADVERSE badges for all USD corridors
<!-- Sanctions check widget -->
<iframe src="https://compliance.untitledfinancial.com/widget/sanctions"
width="100%" height="320" style="border:none;border-radius:8px"></iframe>
<!-- Corridor health widget -->
<iframe src="https://stability.untitledfinancial.com/widget/corridors"
width="100%" height="320" style="border:none;border-radius:8px"></iframe>
<!-- ESG lookup widget -->
<iframe src="https://esg.untitledfinancial.com/widget/esg"
width="100%" height="360" style="border:none;border-radius:8px"></iframe>

Or open each URL directly to preview the standalone HTML before embedding.