Oracle08

Shadow report & badge

Shadow mode answers one question for a sceptic: what would CompliR have held that you already paid? Paste a payee book and recent payments, get the holds, limits, lookalikes and payments at risk. The badge is the other way round: one image that says an address was screened and links to the proof.

Shadow report

http
POST /api/v1/shadow                         # free during the event
{
  "payeeBook": [                                   // the same book /shadow offers as its example - all real addresses
    { "label": "Ronin Bridge exploiter (Lazarus Group - sanctioned)", "address": "0x098b716b8aaf21512996dc57eb0615e2383e2f96" },
    { "label": "CompliR treasury wallet",                            "address": "0xc742ada2872a042dd36d2e706907b4036968960c" },
    { "label": "GuardedTreasury contract",                           "address": "0x3b13186a1e4b1108ea5cb2f8853d84a2aed71cc5" },
    { "label": "CompliR treasury wallet (new invoice - lookalike)",  "address": "0xc7420000000000000000000000000000000a960c" }
  ],
  "recentPayments": [
    { "to": "0x098b716b8aaf21512996dc57eb0615e2383e2f96", "amountUsdc": 150 },
    { "to": "0xc742ada2872a042dd36d2e706907b4036968960c", "amountUsdc": 10 }
  ]
}

→ 200
{
  "entries": [{ "label", "address", "score", "tier", "reasonCodes": ["SANCTIONS_DIRECT", "USDC_BLACKLISTED", …], "wouldHold", "wouldLimit" }, …],
  "summary": { "screened": 4, "wouldHold": …, "wouldLimit": …, "lookalikes": … },   // whatever the live pipeline returns today
  "paymentsAtRisk": [{ "to": "0x098b…2f96", "amountUsdc": 150 }]                      // the 150 USDC to the sanctioned wallet
}
Input
payeeBook 1–500 entries (label, address) · recentPayments ≤ 1,000 (to, amountUsdc, txHash?)
Targets
book addresses first, then payment recipients not in the book; de-duplicated; at most 50 unique addresses screened, 4 in flight, depth 1
wouldHold
tier HIGH
wouldLimit
tier MEDIUM
lookalikes
LOOKALIKE_OF_KNOWN_PAYEE hits against your own book (same first and last four hex characters, or ≥ 0.8 similarity); the example book carries one lookalike of our own treasury wallet
paymentsAtRisk
every recent payment whose recipient is not LOW
Page
/shadow accepts CSV label,address or JSON lines and has “Copy report as Markdown” for a Discord paste

Shadow screens go through the real pipeline (attested, ledgered) under the internal client id shadow, so they never count as traction. The MCP tool shadow_report wraps the same endpoint.

Badge

GET /api/v1/badge/:address.svg renders "Screened by CompliR · TIER · valid until <date>" from the latest stored attestation. It never runs the pipeline: an address that was never screened gets a grey "unknown" badge; an attestation past validUntil reads "expired". Responses carry Cache-Control: max-age=60 so receipts and READMEs can hot-link it. Build a snippet at /badge.

html
<!-- Markdown -->
[![Screened by CompliR](https://trycomplir.xyz/api/v1/badge/0xPayee.svg)](https://trycomplir.xyz/api/v1/attestation/0xPayee)

<!-- HTML -->
<a href="https://trycomplir.xyz/api/v1/attestation/0xPayee">
  <img src="https://trycomplir.xyz/api/v1/badge/0xPayee.svg" alt="Screened by CompliR" height="20">
</a>

Link the badge to /api/v1/attestation/:address so a reader can verify the EIP-712 signature behind it rather than trust the picture.