关于 Financial Crime Screening
Financial Crime Screening 是面向合规团队的 MCP 服务,可针对个人和公司查询 13 个实时数据源。它通过八种工具返回 AML 风险等级、评分、证据和 SAR 建议。
主要功能
- 01八种 AML 筛查工具
- 02接入 13 个实时数据源
- 03五维风险评分
- 04制裁命中自动升级
- 05空壳公司指标检测
- 06结构化证据与 SAR 建议
适用场景
- 01筛查银行新客户
- 02加密货币交易所 AML 核查
- 03代理行尽职调查
- 04分流交易监控警报
MCP 相关
通过持久化 HTTP 端点向 MCP 客户端提供八种 AML 筛查工具。工具查询实时数据源,并返回风险分类及其证据。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcpclaude mcp add --transport http financial-crime-screening https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp{"mcpServers":{"financial-crime-screening":{"type":"http","url":"https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"}}}在 Cursor 中打开{"servers":{"financial-crime-screening":{"type":"http","url":"https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"}}}在 VS Code 中打开{"mcpServers":{"financial-crime-screening":{"type":"http","url":"https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"}}}{"mcpServers":{"financial-crime-screening":{"serverUrl":"https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
金融犯罪筛查 MCP 服务
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf):
{
"mcpServers": {
"financial-crime-screening-mcp": {
"url": "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"
}
}
}
金融犯罪筛查 MCP 服务可将你的 AI Agent 或合规工作流连接到 13 个实时数据源,用于 AML/CFT 尽职调查。提供实体名称后,它会返回结构化的 AML 风险等级——LOW、MEDIUM、HIGH 或 PROHIBITED——以及各维度评分、SAR 申报建议和佐证。专为银行、加密货币交易所、货币服务企业和合规团队打造,可按需提供满足审计要求的风险分类。
该服务运行在 Apify 的 Standby 基础设施上,并通过持久化的 /mcp 端点提供 8 个 MCP 工具。每个工具都会向底层 Actor 集群并行发送请求,查询制裁数据库、刑事监控名单、外国代理人登记册、企业登记册和金融监管机构,然后通过五维 AML 评分引擎生成量化且可解释的风险结果。无需订阅。没有月度最低消费。按工具调用次数付费。
可以访问哪些数据?
| 数据点 | 来源 | 示例 |
|---|---|---|
| 📋 美国财政部 SDN 名单及受封锁人员 | OFAC 制裁名单 | “Meridian Trade LLC”——精确匹配,评分 1.00 |
| 🌐 全球制裁名单、PEP 和监控名单 | OpenSanctions(100 多个名单) | 欧盟综合名单、联合国安理会名单 |
| 🚨 国际通缉人员 | Interpol 红色通缉令 | 指控:电信欺诈、洗钱 |
| 🔴 美国联邦通缉人员 | FBI 最高通缉名单 | 逃犯状态、最后已知位置 |
| 🏛️ 外国代理人登记信息 | FARA DOJ 登记册 | 外国委托人、原籍国 |
| 🗳️ 政治捐款记录 | FEC 竞选财务数据 | 捐款 485,000 美元——PEP 指标 |
| 🏢 企业登记信息(140 多个司法管辖区) | OpenCorporates(2 亿多条记录) | 司法管辖区:VG,状态:已解散 |
| 🔑 法律实体识别信息 | GLEIF LEI 数据库 | LEI:549300ABCD1234567890 |
| 🤝 非营利组织 990 财务数据 | ProPublica 非营利组织查询工具 | IRS 撤销状态 |
| ⚠️ 消费者金融投诉 | CFPB 投诉数据库 | 73 项投诉——存在造成伤害的模式 |
| 🏦 美国银行机构核验 | FDIC 银行数据 | 存款保险有效/无效状态 |
| 📑 SEC 监管文件 | SEC EDGAR | 8-K、SC 13D、执法文件 |
| 📈 内部人交易披露 | SEC Form 4 内部人交易 | 卖出/买入比例——87% 为卖出 |
为什么使用金融犯罪筛查 MCP 服务?
对单个实体进行人工 AML 筛查,需要打开六个或更多政府门户网站,使用不同拼写变体进行姓名搜索,将结果记录在电子表格中,并定期重复整个流程。经过培训的合规分析师为每个实体进行初始准入筛查需要 45–90 分钟。面对大量客户准入流程或交易监控队列时,这种处理能力无法扩展。
Dow Jones Risk 和 Refinitiv World-Check 等供应商每年收取 15,000–60,000 美元订阅费,以提供类似数据的访问权限。这个 MCP 可通过编程方式访问相同的一手来源——OFAC、Interpol、FBI、FARA、OpenSanctions、SEC、FDIC、CFPB——每次筛查只需几美元,且没有最低消费要求。
- 定时调度——通过 Apify 内置的调度器,根据监控名单变动或合规日历定期重新筛查
- API 访问——从 Python、JavaScript、Claude Desktop、Cursor 或任何兼容 MCP 的客户端触发筛查
- 并行执行——每个工具内的所有 Actor 调用都会并行运行,数秒内即可返回结果,而非数分钟
- 监控——筛查运行完成或返回意外结果时,通过 Slack 或电子邮件接收提醒
- 集成——将结果连接到案件管理系统、Google Sheets、HubSpot 或 Webhook
功能
- 八种专用 MCP 工具,覆盖完整的 AML 筛查工作流:实体筛查、制裁深度核查、刑事观察名单扫描、PEP 分析、空壳公司检测、金融机构验证、关联度评分和完整 AML 分类
- 13 个实时数据源,实时查询——结果始终反映各数据库当前发布的状态,而非缓存副本
- 五维 AML 评分引擎,按制裁风险(0-35)、企业透明度(0-25)、政治风险(0-20)、金融监管状况(0-10)和犯罪关联度(0-10)分配分值,总分为 0-100
- 自动升级为 PROHIBITED——任何置信度 >= 0.95 的直接制裁匹配,无论综合评分如何,都会触发 PROHIBITED 等级,并要求提交 SAR
- 模糊名称匹配——OFAC 和 OpenSanctions 命中结果分为精确匹配(评分 >= 0.95)和模糊匹配(0.50-0.95),以便建立优先审核队列
- 空壳公司检测,使用七种文本指标(注册代理人、代名人、无记名股份、信托公司、企业服务、现成公司、注册代理机构)扫描 OpenCorporates 记录
- 空壳公司避税地司法管辖区检查,针对 12 个已知离岸司法管辖区:巴拿马(PA)、英属维尔京群岛(VG)、开曼群岛(KY)、伯利兹(BZ)、塞舌尔(SC)、萨摩亚(WS)、瓦努阿图(VU)、马绍尔群岛(MH)、百慕大(BM)、泽西岛(JE)、根西岛(GG)、马恩岛(IM)
- 犯罪关联汇聚评分——每个触发的不利信号类别都会为 0-100 的汇聚评分增加 17 分;四个或更多类别汇聚时,将触发 CRITICAL 分类
- 通过 FEC 门槛逻辑检测 PEP——竞选捐款超过 $10,000 时触发潜在 PEP 标记;超过 $100,000 时确认为 PEP
- FARA 外国代理人映射——识别已注册的外国代理人及其外国委托人和原籍国
- 非营利组织洗钱标记——IRS 撤销非营利组织资格的情况被视为一项独立的 AML 风险信号
- 支出限额执行——每个工具都会在执行前检查
Actor.charge(),如果达到单次运行的预算上限,则返回结构化错误 - 无状态 Streamable HTTP 传输——每次向
/mcp发送 POST 请求都会实例化一个全新的McpServer,不保留会话状态,从而支持水平扩展
金融犯罪筛查用例
银行客户开户与 KYC
银行和信用合作社的合规团队在开户时使用 comprehensive_entity_screen,同时对新申请人进行 OFAC、OpenSanctions、Interpol 和 FBI 筛查。结构化输出可直接纳入开户案例档案,将每位客户的分析师耗时从 60 分钟缩短至不足 5 分钟,同时生成可审计的记录。
加密货币交易所 AML 与 FinCEN 合规
受 FinCEN 的 MSB 规则和欧盟 MiCA 监管的加密货币交易所,会在启用提现或高额交易前使用 aml_risk_classification。PROHIBITED 等级输出结合 sarRequired 标记和 SAR 叙述指南,可满足《银行保密法》规定的记录保存义务。
代理行尽职调查
寻求建立代理关系的被代理银行,根据 FATF 第 13 项建议,必须进行强化尽职调查。financial_institution_verify 会交叉核查 FDIC 保险状态、企业注册信息和 CFPB 投诉密度,以发现可能冒充受监管银行或存在消费者受害模式的机构。
交易监控与 SAR 调查
合规调查人员可使用 proximity_to_crime_score,根据汇聚等级对交易监控警报进行分流,然后再投入分析师时间开展完整调查。CRITICAL 汇聚评分(四个或更多不利信号类别)会直接升级至 SAR 准备流程;NONE 评分则表示警报已解除,无需人工审核。
高价值账户的 PEP 筛查
需要识别政治公众人物的私人银行和财富管理机构会使用 pep_influence_analysis 检查 FARA 注册记录和 FEC 捐款总额。该工具会返回 PEP 分类及佐证,并建议开展强化尽职调查、核实财富来源并获得高级管理层批准。
空壳公司调查与受益所有权
企业调查人员和 FinCEN 检查人员会使用 corporate_shell_detection,在处理电汇前识别潜在的分层结构。该工具会生成空壳风险评分(0-100)并列出各项指标的调查结果,为根据 CDD Rule 提出受益所有权文件要求提供支持。
如何筛查实体的金融犯罪风险
- 连接 MCP 客户端 — 将服务 URL
https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp添加到 Claude Desktop、Cursor、Windsurf 或任何兼容 MCP 的 AI Agent。 - 选择合适的工具 — 初次开户时从
comprehensive_entity_screen开始;如果需要完整记录风险判定及各维度评分,则使用aml_risk_classification。 - 运行筛查 — 传入实体名称和类型(个人/公司)。服务会并行调用最多 13 个 Actor,通常会在 30-90 秒内返回结果。
- 查看 AML 风险等级 — 响应包含风险等级(LOW/MEDIUM/HIGH/PROHIBITED)、数值评分、各维度细分、SAR 建议,以及合规档案所需的所有佐证。
输入参数
这是一个 MCP 服务,不包含传统的 Actor 输入字段。每个工具都接受下方列出的参数。
工具参数
| 工具 | 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
comprehensive_entity_screen | entity_name | string | 是 | — | 要筛查的个人或公司名称 |
comprehensive_entity_screen | entity_type | enum | 否 | unknown | individual、company 或 unknown |
comprehensive_entity_screen | country | string | 否 | — | 两字母国家代码提示(例如 US、GB) |
sanctions_deep_check | entity_name | string | 是 | — | 要与 OFAC 和 OpenSanctions 数据进行比对的名称 |
sanctions_deep_check | include_aliases | boolean | 否 | true | 搜索已知别名和音译形式 |
criminal_watchlist_scan | name | string | 是 | — | 要在 Interpol 和 FBI 数据库中搜索的名称 |
criminal_watchlist_scan | nationality | string | 否 | — | 用于缩小 Interpol 搜索范围的国籍提示 |
pep_influence_analysis | name | string | 是 | — | 个人或组织名称 |
pep_influence_analysis | include_campaign_finance | boolean | 否 | true | 包含 FEC 竞选财务记录 |
corporate_shell_detection | company_name | string | 是 | — | 要分析空壳指标的公司名称 |
corporate_shell_detection | jurisdiction | string | 否 | — | 已知的公司管辖地 |
financial_institution_verify | institution_name | string | 是 | — | 金融机构名称 |
financial_institution_verify | include_complaints | boolean | 否 | true | 包含 CFPB 消费者投诉分析 |
proximity_to_crime_score | entity_name | string | 是 | — | 要评估信号汇聚情况的实体 |
proximity_to_crime_score | entity_type | enum | 否 | unknown | individual、company 或 unknown |
aml_risk_classification | entity_name | string | 是 | — | 要进行分类的实体名称 |
aml_risk_classification | entity_type | enum | 否 | unknown | individual、company 或 unknown |
aml_risk_classification | country | string | 否 | — | 国家代码提示 |
连接配置示例
Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"financial-crime-screening": {
"url": "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline(.cursor/mcp.json 或等效文件):
{
"mcpServers": {
"financial-crime-screening": {
"url": "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
直接调用单个工具的 HTTP 请求:
curl -X POST "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "aml_risk_classification",
"arguments": {
"entity_name": "Meridian Trade & Finance LLC",
"entity_type": "company",
"country": "PA"
}
},
"id": 1
}'
使用技巧
- 根据搜索内容匹配实体类型——对于个人,传入
entity_type: "individual",跳过 LEI、OpenCorporates 和 FDIC 查询,从而降低成本和延迟。 - 初次入驻时使用
comprehensive_entity_screen,将aml_risk_classification留作需要记录各维度评分的最终风险判定。 - 国家/地区代码提示可缩小结果范围——如果你已知某实体在 BVI 注册,传入
country: "VG"可提高在各公司注册机构中的匹配精度。 - 通过 Apify API 批量处理——对于大量筛查队列,可在 Python 或 JavaScript 中以编程方式调用 MCP 工具,使用
Promise.all并行处理多个实体。 - 保存完整的 JSON 响应——包含各维度评分的结构化输出旨在作为合规案例档案中的分析记录。
输出示例
以下是针对假设的高风险实体,aml_risk_classification 返回的代表性响应。
{
"entity": "Meridian Trade & Finance LLC",
"entityType": "company",
"amlRiskTier": "PROHIBITED",
"riskScore": 82,
"directSanctionsMatch": true,
"sarRequired": true,
"dimensions": {
"sanctionsWatchlist": {
"score": 35,
"max": 35,
"findings": [
"1 EXACT sanctions match — OFAC/OpenSanctions. PROHIBITED.",
"3 fuzzy sanctions match(es) — manual review required"
]
},
"corporateTransparency": {
"score": 20,
"max": 25,
"findings": [
"Shell company indicators detected: registered agent, nominee",
"Registered in known shell company jurisdiction: VG",
"Entity incorporated only 2 months ago — high-risk age for AML"
]
},
"politicalExposure": {
"score": 12,
"max": 20,
"findings": [
"Registered foreign agent under FARA — principals: Government of Ruritania"
]
},
"financialRegulatory": {
"score": 5,
"max": 10,
"findings": [
"FDIC record shows INACTIVE/CLOSED institution — entity may be impersonating a bank"
]
},
"proximityCrime": {
"score": 10,
"max": 10,
"findings": [
"CRITICAL CONVERGENCE: 4 adverse signal categories (sanctions, foreign agent, shell indicators, consumer complaints) — strong proximity to financial crime"
]
}
},
"recommendation": "TRANSACTION MUST BE BLOCKED. File Suspicious Activity Report (SAR) within 30 days. Do not tip off the subject. Escalate to BSA/AML officer immediately.",
"actorsUsed": 13
}
输出字段
| 字段 | 类型 | 描述 |
|---|---|---|
entity | string | 提交的实体名称 |
entityType | string | individual、company 或 unknown |
amlRiskTier | string | LOW、MEDIUM、HIGH 或 PROHIBITED |
riskScore | number | 综合 AML 评分,范围为 0-100 |
directSanctionsMatch | boolean | 若任何制裁命中项的置信度 >= 0.95 或为精确匹配,则为 True |
sarRequired | boolean | 对于 HIGH 和 PROHIBITED 级别为 True |
dimensions.sanctionsWatchlist.score | number | 制裁维度的得分(最高 35 分) |
dimensions.sanctionsWatchlist.findings | array | 各项信号对应的易读发现说明 |
dimensions.corporateTransparency.score | number | 公司透明度维度的得分(最高 25 分) |
dimensions.corporateTransparency.findings | array | 空壳公司指标、司法管辖区标记、状态问题 |
dimensions.politicalExposure.score | number | PEP 维度的得分(最高 20 分) |
dimensions.politicalExposure.findings | array | FARA 注册信息、FEC 捐款总额 |
dimensions.financialRegulatory.score | number | 监管状况维度的得分(最高 10 分) |
dimensions.financialRegulatory.findings | array | FDIC 状态、CFPB 投诉密度、内部人士交易比例 |
dimensions.proximityCrime.score | number | 信号汇聚评分(最高 10 分) |
dimensions.proximityCrime.findings | array | 汇聚级别和活跃类别列表 |
recommendation | string | 与风险级别对应的合规措施(拦截、提交 SAR、加强尽职调查、标准处理) |
actorsUsed | number | 本次运行调用的底层 Actor 数量 |
对于 sanctions_deep_check,其他字段包括 blocked(boolean)、summary(判定字符串)、exactMatches(array)和 fuzzyMatches(array)。对于 proximity_to_crime_score,其他字段包括 proximityScore(0-100)、convergenceLevel(NONE/LOW/MODERATE/HIGH/CRITICAL)、activeSignals(数量)和 breakdown(按类别划分的数组)。
筛查实体是否涉及金融犯罪需要多少费用?
Financial Crime Screening MCP Server 采用按事件付费的定价方式——每次工具调用收费 $0.045。没有订阅费、月度最低消费,也不收取闲置待机费用。
| 场景 | 工具调用次数 | 单次调用费用 | 总费用 |
|---|---|---|---|
| 快速制裁筛查 | 1 | $0.045 | $0.045 |
| 初始入驻(筛查 + shell + PEP) | 3 | $0.045 | $0.135 |
| 完整 AML 分类(13 个 Actor) | 1 | $0.045 | $0.045 |
| 每日重新筛查 100 个实体 | 100 | $0.045 | $4.50 |
| 每月批量筛查 1,000 个实体 | 1,000 | $0.045 | $45.00 |
你可以为每次运行设置最高支出限额,以控制费用。服务会在每次执行工具前检查预算上限;如果达到限额,就会返回结构化错误,而不会继续收费。
Apify 免费套餐包含每月 $5 的平台额度——足以在无需付款的情况下完成约 110 次完整 AML 分类。
相比之下,Dow Jones Risk Center 或 Refinitiv World-Check 订阅同一批主要数据源的费用为每年 $15,000-60,000。使用此 MCP,每月进行 500-2,000 次筛查的大多数合规团队只需花费 $22-$90/月,且无需承诺长期使用。
使用 API 进行金融犯罪筛查
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
# Start the MCP server actor in standby mode
actor_client = client.actor("ryanclinton/financial-crime-screening-mcp")
# Call the AML classification tool via HTTP (the actor runs as a persistent server)
import urllib.request
import json
url = "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
payload = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "aml_risk_classification",
"arguments": {
"entity_name": "Meridian Trade & Finance LLC",
"entity_type": "company",
"country": "PA"
}
},
"id": 1
}
req = urllib.request.Request(url, json.dumps(payload).encode(), headers)
with urllib.request.urlopen(req) as response:
result = json.loads(response.read())
content = json.loads(result["result"]["content"][0]["text"])
print(f"Entity: {content['entity']}")
print(f"AML Risk Tier: {content['amlRiskTier']}")
print(f"Risk Score: {content['riskScore']}/100")
print(f"SAR Required: {content['sarRequired']}")
print(f"Recommendation: {content['recommendation']}")
JavaScript
const MCP_URL = "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp";
const API_TOKEN = "YOUR_API_TOKEN";
async function screenEntity(entityName, entityType = "unknown") {
const response = await fetch(MCP_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_TOKEN}`
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "aml_risk_classification",
arguments: { entity_name: entityName, entity_type: entityType }
},
id: 1
})
});
const envelope = await response.json();
const result = JSON.parse(envelope.result.content[0].text);
console.log(`Entity: ${result.entity}`);
console.log(`AML Risk Tier: ${result.amlRiskTier} (score: ${result.riskScore}/100)`);
console.log(`Direct Sanctions Match: ${result.directSanctionsMatch}`);
console.log(`SAR Required: ${result.sarRequired}`);
console.log(`Recommendation: ${result.recommendation}`);
for (const [dim, data] of Object.entries(result.dimensions)) {
console.log(` ${dim}: ${data.score}/${data.max} — ${data.findings[0]}`);
}
return result;
}
await screenEntity("Meridian Trade & Finance LLC", "company");
cURL
# Screen an entity for AML risk
curl -X POST "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "aml_risk_classification",
"arguments": {
"entity_name": "Meridian Trade & Finance LLC",
"entity_type": "company"
}
},
"id": 1
}'
# Run a quick sanctions check only
curl -X POST "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "sanctions_deep_check",
"arguments": {
"entity_name": "Viktor Petrov",
"include_aliases": true
}
},
"id": 2
}'
# List all available tools
curl -X POST "https://ryanclinton--financial-crime-screening-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{"jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 3}'
Financial Crime Screening MCP Server 的工作原理
Actor 集群与并行调度
此 MCP 服务使用 TypeScript 实现,采用 @modelcontextprotocol/sdk 1.17.5 版,并以 Express 5 作为 HTTP 主机。当工具调用到达 /mcp 端点时,getServer() 会在无状态模式下实例化一个全新的 McpServer 和 StreamableHTTPServerTransport(不设置 sessionIdGenerator)。这样无需共享会话状态即可进行水平扩展。
每个工具都会调用 actor-client.ts 中的 runActorsParallel(),该函数通过 Promise.all() 对一组 runActor() 调用进行封装。每个 runActor() 都会调用 ApifyClient.actor(name).call(input, { waitSecs: 120, memory: 256 }),并提取默认数据集。失败的 Actor 调用会返回空数组,而不是抛出异常,因此单个数据源中断不会导致整个筛查流程中止。底层的 13 个 Actor 涵盖:ofac-sanctions-search、opensanctions-search、interpol-red-notices、fbi-wanted-search、fara-foreign-agents、fec-campaign-finance、opencorporates-search、gleif-lei-lookup、nonprofit-explorer、edgar-filing-search、sec-insider-trading、cfpb-consumer-complaints 和 fdic-bank-search。
五维 AML 评分引擎
scoring.ts 实现了 computeAMLRisk(),用于评估五个独立维度,并将分数相加,最高为 100 分。
维度 1 — 制裁与观察名单风险(最高 35 分): 精确制裁匹配(置信度 >= 0.95 或 match === "exact")加 30 分,并将 directSanctionsMatch = true。模糊匹配每项加 5 分,最多额外加 15 分。命中 Interpol 红色通缉令加 15 分。命中 FBI 头号通缉犯名单加 15 分。任何直接匹配都会触发自动覆盖,将风险层级设为 PROHIBITED,无论综合总分是多少。
维度 2 — 企业透明度(最高 25 分): 非个人主体缺少企业记录,加 12 分。OpenCorporates 记录中出现空壳公司文本指标(通过不区分大小写的 JSON.stringify 扫描 7 个词进行检查),加 8 分。在 12 个空壳公司避税天堂司法管辖区之一注册,加 6 分。公司状态为已解散或不活跃,加 5 分。公司成立未满 3 个月,加 5 分;未满 12 个月,加 2 分。已注册公司缺少 LEI,加 4 分。非营利组织的 IRS 免税资格被撤销,加 6 分。
维度 3 — 政治风险暴露(最高 20 分): 注册为 FARA 机构加 12 分;外国委托人记录超过 3 条,再加 4 分。FEC 捐款超过 $100,000,加 10 分;超过 $10,000,加 5 分;存在任何 FEC 记录,加 2 分。totalDonations 数值通过汇总所有 FEC 记录中的 amount、contribution_receipt_amount 或 total 字段计算得出。
维度 4 — 金融监管状况(最高 10 分): 具有执法关注表单类型(8-K、SC 13D、10-K/A)的 SEC 文件超过 5 份,加 3 分。内幕交易投资组合中卖出交易占比超过 80%,作为潜在逃离或抢先交易信号加 4 分。CFPB 投诉超过 50 起,加 3 分;超过 10 起,加 1 分。FDIC 记录显示不活跃或已关闭,作为银行冒充指标加 5 分。
维度 5 — 与犯罪的关联度(最高 10 分): 统计 6 类不利信号(制裁、Interpol、FBI、FARA、超过 20 起 CFPB 投诉、空壳公司指标)中活跃的类别数量,并将信号汇聚数量转换为分数:1 类 = 2 分,2 类 = 4 分,3 类 = 7 分,4 类及以上 = 10 分。此维度体现了多个弱信号同时出现,比任何单个强信号更能表明存在洗钱风险。
风险层级阈值与 SAR 逻辑
tierFromScore() 将综合总分映射到风险层级:>= 71 或 directSanctionsMatch === true → PROHIBITED;>= 46 → HIGH;>= 21 → MEDIUM;否则为 LOW。PROHIBITED 和 HIGH 层级的 sarRequired 均设为 true。每个层级都对应一条特定的合规建议;PROHIBITED 层级返回完整的 BSA 义务文本,其中包括 30 天内提交 SAR 的期限,以及禁止向相关主体泄密的要求。
最佳实践提示
-
在入驻时筛查,并在发生事件时重新筛查。 初始筛查可发现已知的不良行为者。安排每 90 天运行一次
comprehensive_entity_screen,并在 OFAC 发布新的 SDN 更新时立即触发sanctions_deep_check。 -
利用实体类型降低延迟和成本。 传入
entity_type: "individual"可跳过企业注册查询(OpenCorporates、GLEIF、FDIC、Nonprofit Explorer),将行为者数量从 13 个降至 9 个,并将响应时间缩短 20-40%。 -
将制裁模糊匹配视为需要审核,而非已排除风险。
sanctions_deep_check工具会将精确匹配与置信度为 0.50-0.95 的模糊匹配区分开来。模糊匹配需要分析师人工审核——不要自动将其标记为无风险。 -
结合 Sanctions Network Analysis MCP 分析所有权关系图。 此服务直接筛查指定实体。若要通过受益所有权链和企业中间方检测制裁风险敞口,请将输出传入 ryanclinton/sanctions-evasion-network-mcp。
-
使用
proximity_to_crime_score进行分流,使用aml_risk_classification作出最终判定。 邻近犯罪评分工具会运行 6-7 个行为者,并在 15-30 秒内返回趋同评分。只有未通过分流或需要留存书面决策记录的实体,才需要进行完整分类(13 个行为者,30-90 秒)。 -
记录完整的 JSON 响应,而不仅是风险等级。 监管检查人员和审计人员希望查看 AML 决策的佐证。各维度评分和发现数组构成分析记录。
-
为批量运行设置支出限额。 以编程方式筛查大批次时,请在 Apify 运行配置中设置
maxTotalChargeUsd。服务会在每次工具调用前检查限额,并在达到限额时正常退出。
与其他 Apify 行为者结合使用
| 行为者 | 组合使用方式 |
|---|---|
| Sanctions Network Analysis MCP | 将高风险级别筛查中的实体名称传入网络 MCP,通过所有权链和企业中间方追踪制裁风险敞口 |
| Export Control Screening MCP | 对需要同时满足 AML 和 EAR/OFAC 贸易合规审查要求的两用技术出口商,将其与金融犯罪筛查结合使用 |
| OFAC Sanctions Search | 需要未经 AML 评分处理的原始 SDN 数据时,使用自定义参数直接查询 OFAC |
| OpenSanctions Search | 直接查询 100 多个整合后的观察名单,用于在调用完整 MCP 前进行预筛选的批量筛查工作流 |
| Interpol Red Notices | 直接获取 Interpol 红色通缉令详情,用于 AML 领域之外的执法和调查工作流 |
| GLEIF LEI Lookup | 发起电汇前,核实企业交易对手的 LEI 注册信息和所有权层级 |
| FARA Foreign Agents | 绘制外国代理人网络和外国委托人关系图,用于地缘政治风险评估 |
局限性
- 监管覆盖以美国为中心。 FDIC、CFPB、FEC 和 FARA 均为美国政府来源。对非美国金融机构和外国 PEP 的覆盖可能有限。对于跨境交易,请补充查询所在国家/地区的监管机构。
- 未与 OFAC API 实时集成。 底层 Actor 会查询已发布的 OFAC 数据。SDN 名单更新与 Actor 反映该变更之间存在延迟。若要在交易层面实现真正实时的 OFAC 合规,请将此工具与专用 OFAC API 订阅服务配合使用。
- 模糊匹配需要人工审核。 置信度为 0.50-0.95 的匹配结果会返回以供审核,但不会自动升级处理。该工具无法自行判断模糊匹配是否指向同一人,还是仅仅姓名相似。
- 不能替代法律顾问。 SAR 申报建议是根据 AML 评分结果提供的合规指导文本。实际 SAR 申报义务由适用法律和机构政策决定,而非仅由此工具的输出决定。
- 企业透明度受 OpenCorporates 数据覆盖范围限制。 OpenCorporates 覆盖 140 个司法管辖区的 2 亿多条记录,但部分司法管辖区的数据有限或有延迟。在 OpenCorporates 未覆盖的司法管辖区注册的实体会触发“未找到企业记录”评分惩罚。
- 不提供生物识别或文件验证。 此工具仅处理实体名称,不会执行某些监管框架下完整 KYC 所要求的身份证明文件验证、照片匹配或生物识别检查。
- 并行 Actor 调用的超时时间上限为 120 秒。 如果运行缓慢的底层 Actor(例如高峰时段的 EDGAR)超时,则该维度会返回空结果,而不会导致整个筛查失败。输出会注明
actorsUsed,其值可能低于预期。 - 不适用于自然人隐私保护严格的司法管辖区。 通过 OpenCorporates 和 GLEIF 查询隐私保护法律严格的司法管辖区(例如某些欧盟成员国)的个人时,可能只能获得有限结果。OFAC 和 OpenSanctions 查询符合适用的制裁筛查豁免规定。
集成
- Apify API — 以编程方式触发筛查、管理支出限额,并从合规平台获取运行历史记录
- Webhooks — 每次运行完成后,将筛查结果发送到案件管理系统、合规工作流引擎或告警平台
- Zapier — 将 PROHIBITED 级别的结果发送到 Slack 频道或 Jira 工单,以便分析师立即审核
- Make — 构建自动化定期重新筛查工作流,在监控名单更新事件发生时触发
- Google Sheets — 将筛查结果记录到合规登记表电子表格中,以便留存审计记录
- LangChain / LlamaIndex — 在 AI Agent 流水线中将此 MCP 用作合规工具,以实现自动化入驻、交易审核或调查工作流
故障排除
-
已知存在高风险实体,但工具返回的维度数据为空 — 一个或多个底层 Actor 可能超时了。检查响应中的
actorsUsed。如果低于预期,请重试运行。每个 Actor 的 120 秒超时是硬性限制;高峰时段的政府 API 偶尔会响应过慢,超过此限制。 -
常见姓名出现模糊制裁匹配结果 — 常见姓名(例如“John Smith”)在模糊匹配中会产生许多误报。可通过国家/地区代码提示(
country: "US")缩小搜索范围,或使用sanctions_deep_check并设置include_aliases: false以减少干扰。对于模糊匹配,合规决策始终需要人工审核。 -
首次调用时出现
spending limit reached错误 — 你的 Apify 账户为本次运行设置的maxTotalChargeUsd过低。请在 Apify 运行设置或程序化调用参数中提高支出限额。每次工具调用费用为 $0.045。 -
服务对 GET 请求返回 405 — 根据 JSON-RPC 2.0 规范,MCP 端点仅接受 POST 请求。所有工具调用和
tools/list发现请求都请使用 POST。向/mcp发送 GET 请求会有意返回 405 和说明性错误消息。 -
同一实体的两次运行结果不同 — 所有数据库都会实时查询。OFAC 可能会在不另行通知的情况下更新 SDN 名单。OpenSanctions 会持续导入新的来源数据。结果反映的是各数据库在查询时的状态,因此不同运行之间出现差异是正常的,也是设计如此。
负责任地使用
- 此服务仅访问公开的政府数据:OFAC、OpenSanctions、Interpol、FBI、FARA、FEC、SEC、CFPB、FDIC、GLEIF 和 OpenCorporates。
- AML 筛查结果是分析辅助信息,并非法律认定。合规决策必须由具备资质的人员依据适用法律作出。
- 存储包含个人信息的筛查结果时,请遵守 GDPR、CCPA 及适用的数据保护法律。
- 请勿将此工具用于与合法合规、尽职调查或风险管理工作流无关的个人筛查。
- SAR 申报义务和时限由 BSA/FinCEN 法规规定,而非由此工具返回的建议字符串决定。
- 有关网页抓取合法性的指南,请参阅 Apify 的指南。
常见问题
使用此 MCP 进行金融犯罪筛查,与 World-Check 或 Dow Jones Risk Center 等付费合规平台有何不同? 此 MCP 以极低的成本查询与商业平台汇总的相同主要来源(OFAC SDN、Interpol、FBI、FARA、FEC、OpenSanctions)。商业平台还提供专有编辑内容、增强型数据关联和 SLA 保证。此工具最适合需要以编程方式集成 AI 进行 AML 筛查、又不想签订六位数年费合同的团队。
制裁筛查中的模糊姓名匹配有多准确?
OFAC 匹配使用底层 ofac-sanctions-search Actor 内置的模糊匹配,通过 Levenshtein 距离和转写来识别不同拼写形式。置信度 >= 0.95 的命中会被归类为精确匹配。置信度介于 0.50 和 0.95 之间的命中会作为模糊匹配返回,需要人工审核。常见姓名的误报率不可忽视,因此模糊匹配结果始终需要人工审核。
观察名单数据库的更新及时性如何?
每次工具调用时都会实时查询所有数据库,不使用缓存快照。结果反映的是查询时 OFAC、OpenSanctions、Interpol、FBI 及其他来源已发布的状态。新增指定对象后,OFAC 通常会在数小时内更新 SDN 名单。
我可以根据金融犯罪筛查结果提交 SAR 吗?
aml_risk_classification 工具会返回各维度评分、证据发现和合规建议,这些构成了 SAR 叙述的分析依据。该工具会明确标示 HIGH 和 PROHIBITED 等级的 sarRequired: true。不过,实际 SAR 必须由符合资质的 BSA/AML 专员根据 FinCEN Form 114 的要求编制并提交。
将此工具用于 AML 合规筛查是否合法? 合法。此工具查询政府公开数据库,旨在支持合规的工作流。根据《银行保密法》,OFAC 筛查是美国金融机构的法定义务。有关数据访问合法性的指南,请参阅 Apify 关于网页抓取合法性的指南。
每小时可以筛查多少个实体? 每次工具调用会并行运行多达 13 个 actor,通常在 30-90 秒内完成。实际使用中,单个客户端每小时可完成 40-80 次完整 AML 分类。如需更高吞吐量,请通过 Apify API 并发运行多个 MCP 调用。
此 MCP 是否支持对多个实体进行批量筛查?
MCP 协议面向单实体工具调用。要进行批量筛查,请使用 Apify API 向 MCP 端点分发多个并发 HTTP 请求。建议使用 Python asyncio 循环,或通过 JavaScript Promise.all 遍历实体列表。
底层 actor 不可用或超时时会发生什么?
每个 runActor() 调用都由 try-catch 包裹,发生故障时会返回空数组。actor 超时不会中止整个筛查。响应中包含 actorsUsed,因此你可以查看有多少数据源参与了筛查。如果某个关键维度(例如制裁)因超时而返回空结果,请将结果视为不确定,并重新运行。
我可以定期安排重新筛查以进行持续监控吗? 可以。使用 Apify 的调度程序,按每日、每周或自定义日历触发重新筛查。可结合 Webhook,在筛查完成时自动将结果推送到你的案件管理系统。
空壳公司检测是否涵盖受益所有权?
corporate_shell_detection 工具会在公开可用的企业记录中识别空壳公司指标——名义董事、注册代理人、不记名股份和避税天堂司法管辖区。它不会解析完整的受益所有权链。如需结构化所有权映射和 UBO 调查,请搭配使用 ryanclinton/sanctions-evasion-network-mcp。
PROHIBITED 等级在实际操作中意味着什么? 当出现直接制裁匹配(OFAC 或 OpenSanctions 置信度 >= 0.95),或综合风险评分高于 70 时,会触发 PROHIBITED 等级。建议文本与 BSA 义务一致:阻止交易,在 30 天内提交 SAR,不得向相关对象泄露信息,并立即上报 BSA/AML 专员。
接近犯罪评分与整体 AML 风险评分有何不同?
接近度评分(0-100,由 proximity_to_crime_score 工具给出)仅衡量信号汇聚情况——6 类不利类别中有多少类同时处于活跃状态,每类加权 17 分。AML 风险评分(0-100,由 aml_risk_classification 给出)则是涵盖全部 5 个维度的加权综合评分,其中制裁风险权重最高(最高 35 分)。接近度评分是更快速、成本更低的初步筛查信号;AML 风险评分则是完整的、有据可查的评估结论。
帮助我们改进
如果遇到问题,启用 Apify 账户中的运行共享功能,可以帮助我们更快地调试:
- 前往 账户设置 > 隐私
- 启用 与公开 Actor 创建者共享运行记录
这样一来,出现问题时我们就能查看运行详情,从而更快地修复问题。只有 Actor 开发者可以查看你的数据,不会公开显示。
支持
发现错误或有功能请求?请在此 Actor 页面上的 问题标签页 中提交问题。如需添加自定义数据源、企业集成或白标合规部署,请通过 Apify 平台联系我们。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。