# AML Section Technicals

### Architecture Overview

{% hint style="info" %}
The `@cityprotocol/core` package exposes a unified TypeScript interface for AML screening. It wraps provider-specific APIs (like Elliptic) behind a provider-agnostic client, allowing teams to screen wallets and transactions without coupling application logic to a single compliance vendor.
{% endhint %}

City Protocol's AML infrastructure is part of the compliance layer within our Neobank as a Service stack. It is designed to screen wallets and transactions before allowing sensitive actions such as deposits, withdrawals, or address whitelisting, powered by a pluggable provider model. The system supports wallet exposure analysis, transaction source-of-funds tracing, and configurable risk rule evaluation. This screen-then-decide workflow mirrors the compliance checks used in traditional banking and fintech, bridging the gap between institutional-grade AML requirements and on-chain asset flows.

> City Protocol's AML module uses a **provider-agnostic client architecture** with **Elliptic as the current default provider**, and is designed to run **server-side in production environments**. The model is extensible — providers can be swapped or composed without changing application code.

***

### Key Components

<table><thead><tr><th width="216.44921875">Component</th><th width="129.60546875">Scope</th><th>Description</th></tr></thead><tbody><tr><td><code>CityAmlClient</code></td><td>Orchestration</td><td>Provider-agnostic client that exposes all screening and reference methods. Accepts any conforming provider instance at construction time. Does not hold credentials or make direct vendor API calls.</td></tr><tr><td><code>EllipticAmlProvider</code></td><td>Provider</td><td>The current default provider implementation. Connects to Elliptic's screening API using server-side credentials to perform wallet exposure and transaction source-of-funds analysis.</td></tr><tr><td>Wallet Analysis</td><td>Screening</td><td>Evaluates a wallet address for exposure to sanctioned entities, darknet markets, mixers, and other risk categories. Returns structured risk data the integrator can act on.</td></tr><tr><td>Transaction Analysis</td><td>Screening</td><td>Traces the source of funds for a specific on-chain transaction, returning entity attributions, risk scores, and category breakdowns.</td></tr><tr><td>Reference Data</td><td>Configuration</td><td>Exposes supported asset lists, risk rule definitions, and criteria categories used to interpret and display screening results.</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://city-protocol.gitbook.io/docs/neofinance-as-a-service/kyc-aml-module/aml-section-technicals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
