Evidence registry

AML screening methodology

Every factual product statement below is translated from the same methodology evidence registry.

BLUF

Methodology at a glance

The first-party pipeline fetches chain data through chain-specific handlers selected by the detected or trusted chain, and refuses to score a supported chain when its provider failed outright.

Scope note: Do not turn the handler inventory into a broader network-support claim without reconciling product_facts.json.

Evidence anchors
  • aml_tracker/engine.py:1414
  • aml_tracker/engine.py:1432
  • aml_tracker/engine.py:1478
  • aml_tracker/engine.py:1487

Merkle Science is the optional external enrichment provider: the engine submits an address and network to it through a provider client that returns a status and an enrichment payload, or no payload when the provider is unavailable.

Scope note: The provider is optional and may return unavailable; never describe it as guaranteed.

Evidence anchors
  • aml_tracker/engine.py:1443
  • shared/aml_provider.py:68
  • shared/aml_provider.py:71
  • shared/aml_provider.py:72

The anonymous free website check switches the deep-analysis layer off, reports that it was not included, and the engine omits the Merkle Science coroutine from that branch.

Scope note: Free still uses OFAC, chain fetch, and the applicable BTC/ETH/TRX blacklist function.

Evidence anchors
  • payment_api.py:1047
  • payment_api.py:1068
  • aml_tracker/engine.py:1470
  • aml_tracker/engine.py:1471
  • aml_tracker/engine.py:1504
  • aml_tracker/engine.py:1505

Architecture layers

First-party screening layer
Evidence IDRegistry statement
own_ofac_sdn_address_screening

The first-party pipeline checks a wallet address against the downloaded OFAC SDN cryptocurrency-address set.

Scope note: Say address screening, not entity KYC or legal clearance.

Evidence anchors
  • aml_tracker/engine.py:284
  • aml_tracker/engine.py:349
  • aml_tracker/engine.py:350
  • aml_tracker/engine.py:352
own_chain_fetch

The first-party pipeline fetches chain data through chain-specific handlers selected by the detected or trusted chain, and refuses to score a supported chain when its provider failed outright.

Scope note: Do not turn the handler inventory into a broader network-support claim without reconciling product_facts.json.

Evidence anchors
  • aml_tracker/engine.py:1414
  • aml_tracker/engine.py:1432
  • aml_tracker/engine.py:1478
  • aml_tracker/engine.py:1487
own_blacklist_sources

The blacklist layer uses Ransomwhere for BTC ransomware addresses, 0xB10C's curated OFAC address files for BTC/ETH/TRX, and the MyEtherWallet darklist for ETH scam or phishing addresses.

Scope note: These are code-configured sources; this registry does not assert their current remote availability or list size.

Evidence anchors
  • shared/blacklists.py:73
  • shared/blacklists.py:80
  • shared/blacklists.py:100
  • shared/blacklists.py:105
  • shared/blacklists.py:165
  • shared/blacklists.py:172
own_tether_freeze_checks

For Ethereum and TRON, the blacklist layer also makes read-only Tether contract calls to test whether an address is frozen.

Scope note: This is issuer-freeze status, not recovery, unfreezing, or return of funds.

Evidence anchors
  • shared/blacklists.py:224
  • shared/blacklists.py:231
  • shared/blacklists.py:252
  • shared/blacklists.py:266
own_blacklist_dispatch

First-party blacklist checks are dispatched only for BTC, ETH, and TRX, then their hit tokens are merged into chain risk signals before scoring.

Scope note: Do not imply that every supported chain receives every blacklist source.

Evidence anchors
  • aml_tracker/engine.py:1435
  • aml_tracker/engine.py:1473
  • aml_tracker/engine.py:1476
own_extended_sanctions_sources

The extended sanctions layer downloads UN, UK OFSI, Australian DFAT, and Swiss SECO datasets and matches entity labels against their normalized names and aliases.

Scope note: AU DFAT and CH SECO are fetched from official government sources. Matching is label-to-entity-name matching, not direct address lookup.

Evidence anchors
  • shared/sanctions_extended.py:36
  • shared/sanctions_extended.py:37
  • shared/sanctions_extended.py:39
  • shared/sanctions_extended.py:41
  • shared/sanctions_extended.py:272
  • shared/sanctions_extended.py:378
  • shared/sanctions_extended.py:415
own_extended_sanctions_effect

A confirmed UN, UK, AU, or CH label match raises the combined score to at least 95 and adds a source-specific sanctions flag.

Scope note: A non-match is not proof that a wallet or owner is sanctions-free.

Evidence anchors
  • aml_tracker/engine.py:1549
  • aml_tracker/engine.py:1550
  • aml_tracker/engine.py:1555
  • aml_tracker/engine.py:1557
  • aml_tracker/engine.py:1558
own_compute_score

The first-party score gives a direct OFAC hit 95 points, applies fixed floors for known blacklist hits, adds a no-history heuristic, caps the result at 100, and maps it to LOW/MEDIUM/HIGH/CRITICAL thresholds.

Scope note: Describe this as a deterministic code heuristic, not a regulator-issued rating.

Evidence anchors
  • aml_tracker/engine.py:1332
  • aml_tracker/engine.py:1339
  • aml_tracker/engine.py:1350
  • aml_tracker/engine.py:1353
  • aml_tracker/engine.py:1359
  • aml_tracker/engine.py:1365
Optional Merkle Science enrichment layer
Evidence IDRegistry statement
ocr_provider_contract

Merkle Science is the optional external enrichment provider: the engine submits an address and network to it through a provider client that returns a status and an enrichment payload, or no payload when the provider is unavailable.

Scope note: The provider is optional and may return unavailable; never describe it as guaranteed.

Evidence anchors
  • aml_tracker/engine.py:1443
  • shared/aml_provider.py:68
  • shared/aml_provider.py:71
  • shared/aml_provider.py:72
ocr_full_tier_and_score_floor

The engine labels a result full only when Merkle Science supplies a real score, and Merkle Science cannot reduce an OFAC or first-party blacklist score floor.

Scope note: Full means completed enrichment in this result contract; it is not a guarantee that every upstream field is populated.

Evidence anchors
  • aml_tracker/engine.py:1526
  • aml_tracker/engine.py:1527
  • aml_tracker/engine.py:1528
  • aml_tracker/engine.py:1533

Free vs paid website paths

Website tier behavior
Evidence IDRegistry statement
free_tier_disables_ocr

The anonymous free website check switches the deep-analysis layer off, reports that it was not included, and the engine omits the Merkle Science coroutine from that branch.

Scope note: Free still uses OFAC, chain fetch, and the applicable BTC/ETH/TRX blacklist function.

Evidence anchors
  • payment_api.py:1047
  • payment_api.py:1068
  • aml_tracker/engine.py:1470
  • aml_tracker/engine.py:1471
  • aml_tracker/engine.py:1504
  • aml_tracker/engine.py:1505
ocr_deep_paid_web_only

In the paid website checkout, Merkle Science is attempted twice with the deep-analysis layer enabled and is accepted as complete only after a real non-sandbox score; a follow-up call with that layer disabled runs only if both attempts return no result object.

Scope note: Scope this statement to the website payment path. The engine enables the deep-analysis layer by default, so this is not a universal claim about every Telegram caller.

Evidence anchors
  • payment_api.py:562
  • payment_api.py:568
  • payment_api.py:569
  • payment_api.py:598
  • payment_api.py:600
  • payment_api.py:607
  • payment_api.py:622
  • payment_api.py:624

Documented limitations

The AML methodology does not provide fund recovery, asset return, unfreezing, or transaction reversal; its output contract is a screening result and risk metadata only.

Scope note: Tether frozen-status reads are evidence checks only; they do not change contract state.

Evidence anchors
  • aml_tracker/engine.py:1576
  • aml_tracker/engine.py:1157
  • aml_tracker/engine.py:1159
  • shared/blacklists.py:224
  • shared/blacklists.py:252

The AML methodology does not implement a Travel Rule messaging protocol or exchange originator and beneficiary identity records; it returns address-level screening fields only.

Scope note: Educational site articles about the Travel Rule are not evidence of product implementation.

Evidence anchors
  • aml_tracker/engine.py:1576
  • aml_tracker/engine.py:1157
  • aml_tracker/engine.py:1159
  • aml_tracker/engine.py:1160

Scorechain is not evidenced as a screening engine or data provider for this methodology; repository references identify branded twin bots that share the AML command set, while the engine's external enrichment call is Merkle Science.

Scope note: Do not call CryptoAML.ai a Scorechain-powered product without a separate, current vendor contract and code integration.

Evidence anchors
  • shared/bot_commands.py:72
  • shared/bot_commands.py:74
  • aml_tracker/engine.py:1443
  • shared/aml_provider.py:71

Publication guardrails

  • Keep tier-specific statements scoped to the web and API paths evidenced above.
  • Do not convert configured sources into claims of current uptime, list size, completeness, or legal certification.
  • Do not claim fund recovery, Travel Rule protocol support, or Scorechain-powered analysis from this registry.