VisionX-KYT/Skill for OpenClaw/SKILL.md
Check Web3 wallet or transaction security using MetaComp VisionX. Trigger when user mentions wallet address (0x..., Bitcoin, Tron), transaction hash, or asks about Web3 security, risk, scam, or suspicious activity. When triggered, read the full SKILL.md file at the skill location before calling any tool or writing any response.
npx skillsauth add metacomp-ai/metacomp-skill VisionX-KYTInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Lark (飞书) channel: If this conversation is running through a Lark bot integration, OR the user explicitly requests Lark card format, OR the system context indicates a Lark/Feishu channel:
→ Read {baseDir}/references/lark-cards.md FIRST, then use its Lark Card JSON v2 format for all output. The PRE-ANALYSIS CHECKLIST, tool calls, data extraction logic, and Absolute Rules from THIS file still apply — only the rendering format changes.
All other channels (CLI, web, Slack, or unknown): → Use the Markdown output format defined below in this file.
☐ 1. Probe server: get_wallet_security(network:"Ethereum", walletAddress:"0x000...0")
→ Error or 401 → Show Setup Guide, STOP
→ Success → continue
☐ 2. All required fields collected?
Wallet: network + walletAddress
Transaction: network + hash + asset + from + to + direction
Transaction: ALWAYS ask "Are you the sender or the recipient?" — never infer
⛔ After asking, STOP. Do not call any tool, do not output any report.
Wait for the user's answer before doing anything else.
① Analysis Preface — > blockquote with 🔬 (see Transaction Report spec below)
② Transaction Security Report — info table + Risk Sources table + Comprehensive Summary
① Analysis Preface — > blockquote with 🔬
⛔ SKIP entirely if get_transaction_security was called in this response (counterparty wallet case).
Skip the blockquote preface only — do NOT skip the Wallet Security Report heading in Step ②. Go straight to Step ②.
② Wallet Security Report — 4 sub-sections (Basic Info / Transaction Timeline / Risk Exposure Breakdown / High Risk Categories)
③ Cross-Vendor Risk Comparison — 4 markdown tables (Direct Incoming / Direct Outgoing / Indirect Incoming / Indirect Outgoing)
④ Comprehensive Summary — 4–6 sentences
⑤ Exposure Detail Tables — 4 markdown tables (all entries, high and low risk)
⑥ Risk Verdict — prominent markdown block with risk level + recommendation
Render as a > blockquote opening with 🔬. Write fresh each time in the user's language.
Three separate paragraphs — do NOT merge them.
Paragraph 1 — Data Sources Name all six vendors: Chainalysis, Elliptic, TRM, Merkle Science, Beosin, and SlowMist. Explain cross-verification eliminates individual blind spots. (1–2 sentences)
Paragraph 2 — Methodology Describe the two-layer analysis: Layer 1 checks direct contact with flagged addresses; Layer 2 traces all fund flows forward and backward through unlimited on-chain hops, calculating taint ratios at each hop depth. ⛔ Do NOT use the word "threshold" or mention specific threshold values. Adapt framing: high risk → emphasize both layers triggered; low risk → explain both layers returned clean; Tron → mention ~10× higher sanctions exposure than Ethereum.
Paragraph 3 — Research Basis Cite at least one figure from: MetaComp Research, "Relative Effectiveness of On-Chain AML/CFT Know-Your-Transaction (KYT) Tools" (July 2025), 7,000 sampled transactions. Key findings (pick most relevant):
If data.extra.selectedTx is null or empty:
Show: "Transaction details were not returned. Overall risk level: data.level."
For each entry in data.extra.selectedTx:
Transaction: txHash (first 10 + last 4 chars)
| Field | Detail |
|---|---|
| Date | date |
| Direction | direction (received / sent) |
| Asset | asset.asset |
| Amount | asset.amount |
| USD Value | $asset.usdValue USD |
| From | fromAddress |
| To | toAddress |
| Risk Level | 🟢 Low / 🟡 Medium / 🟠 Medium-High / 🔴 High / 🔴 Severe (treat as High) — from txRiskLevel |
| Direct Exposure | Yes / No |
⚠️ Risk Sources
| Risk Type | Ratio | Interpretation |
|---|---|---|
| source | ratio | < 5%: low/residual · 5–20%: moderate · > 20%: significant |
For each risk source, add one sentence on practical implications.
If riskSources empty: "✅ No risk sources identified."
📋 Comprehensive Summary (4–5 sentences) ⛔ Do NOT name any specific vendor. Use "multiple vendors", "cross-vendor consensus", etc.
Error Handling
data.success === false or code !== 0 → check failed; suggest retry or metacomp.ai supportBefore writing anything — answer this question:
Was get_transaction_security called earlier in this response?
Render as a > blockquote opening with 🔬. Write fresh in the user's language.
Two separate paragraphs — do NOT merge them. Do NOT include methodology (Layer 1/Layer 2/taint) — that is transaction-report only.
Paragraph 1 — Data Sources Name all six vendors: Chainalysis, Elliptic, TRM, Merkle Science, Beosin, and SlowMist. Explain cross-verification eliminates individual blind spots. (1–2 sentences)
Paragraph 2 — Research Basis Cite at least one figure from: MetaComp Research, "Relative Effectiveness of On-Chain AML/CFT Know-Your-Transaction (KYT) Tools" (July 2025). Key findings (pick most relevant):
Tone: Low risk → explain why clean rating is trustworthy; Tron → reference risk ratio; High risk → reference multi-vendor parallel scanning.
If this is a counterparty wallet, prepend the heading: 🔎 Counterparty Wallet Analysis
Otherwise use: 🔐 Wallet Security Report — MetaComp VisionX
| Field | Detail |
|---|---|
| Address | data.address |
| Network | data.network |
| Overall Risk Level | 🟢 Low / 🟡 Medium / 🟠 Medium-High / 🔴 High — from data.level. Map "Severe" → 🔴 High. Any other unrecognized level → display raw value with 🔴 |
| Field | Detail |
|---|---|
| Earliest Transaction | data.extra.earliestTransactionTime |
| Latest Transaction | data.extra.latestTransactionTime |
| Total Incoming | $data.extra.totalIncoming USD |
| Total Outgoing | $data.extra.totalOutgoing USD |
Briefly comment on activity span and volume (long-standing vs newly created, notable volume?).
| Direction | Total | Low Risk | High Risk | High Risk % |
|---|---|---|---|---|
| Incoming | $incomingRiskExposureBreakdown.totalAmount | $...lowRiskAmount | $...highRiskAmount | highRisk/total×100% |
| Outgoing | $outgoingRiskExposureBreakdown.totalAmount | $...lowRiskAmount | $...highRiskAmount | highRisk/total×100% |
List all items in data.extra.highRiskCategories separated by ·
Example: Sanctions · Theft · Malware
For each category present, add one sentence using the descriptions in Absolute Rules below. If list empty: "✅ No high-risk categories detected." For any category NOT in the predefined list, describe it based on its name and add one general sentence about its risk implications.
Render 4 markdown tables. All table headers MUST use Vendor 1 / Vendor 2 / Vendor 3 — never actual vendor names.
How to build each table:
tagTypeVerbose values across the three vendors for that direction → rowsisHighRisk == true → ⚠️ HighisHighRisk == false → ✅ Low[] → —[], ALL cells for that vendor MUST show —. Never infer or populate any cell from an empty array.— No data from any vendor —Data mapping:
| Table | Title | Vendor 1 | Vendor 2 | Vendor 3 |
|---|---|---|---|---|
| 1 | 📥 Direct Incoming | data.extra.beosin.directIncoming | data.extra.elliptic.directIncoming | data.extra.merklescience.directIncoming |
| 2 | 📤 Direct Outgoing | data.extra.beosin.directOutgoing | data.extra.elliptic.directOutgoing | data.extra.merklescience.directOutgoing |
| 3 | 📥 Indirect Incoming | data.extra.beosin.indirectIncoming | data.extra.elliptic.indirectIncoming | data.extra.merklescience.indirectIncoming |
| 4 | 📤 Indirect Outgoing | data.extra.beosin.indirectOutgoing | data.extra.elliptic.indirectOutgoing | data.extra.merklescience.indirectOutgoing |
Table format:
🔍 Cross-Vendor Risk Comparison
📥 Direct Incoming — Cross-Vendor Risk Flags
| Category | Vendor 1 | Vendor 2 | Vendor 3 | |---|---|---|---| | {tagTypeVerbose} | ⚠️ High / ✅ Low / — | ⚠️ High / ✅ Low / — | ⚠️ High / ✅ Low / — |
(repeat for tables 2–4 with appropriate titles and data)
⛔ Do NOT name any specific vendor. Replace with: "multiple vendors", "cross-vendor consensus", "all vendors", etc.
Render 4 markdown tables. Include every entry — never skip $0 rows. ❌ No HTML — plain text and emoji only.
📥 Direct Incoming Exposure (data.extra.directIncoming)
| Category | Amount (USD) | Ratio | Risk |
|---|---|---|---|
| tagTypeVerbose | ≈ $totalValueUsd | ratio > 0 ? ratio% : "< 0.01%" | ⚠️ High Risk / ✅ Low Risk |
If empty: — No direct incoming exposure recorded —
📥 Indirect Incoming Exposure (data.extra.indirectIncoming)
(same format)
If empty: — No indirect incoming exposure recorded —
📤 Direct Outgoing Exposure (data.extra.directOutgoing)
(same format)
If empty: — No direct outgoing exposure recorded —
📤 Indirect Outgoing Exposure (data.extra.indirectOutgoing)
(same format)
If empty: — No indirect outgoing exposure recorded —
For any ⚠️ High Risk row, add one sentence explaining that category's implications. If any indirect exposure exists, briefly explain the difference between direct and indirect exposure.
Render a prominent verdict block using the format below. This is the last element of every wallet report.
Color mapping:
🚨 High Risk⚠️ Medium-High Risk⚠️ Medium Risk✅ Low Risk---
🚨 Risk Verdict — [risk level label]
[1–2 sentence verdict summarizing the most important finding]
⚡ Recommendation: [freely interact / proceed with caution / avoid / report]
---
Transaction:
☐ Analysis Preface: 3 paragraphs (Vendors / Methodology / Research)?
☐ Transaction Security Report: info table + Risk Sources + Comprehensive Summary?
Wallet:
☐ Analysis Preface output? [skip if counterparty]
☐ Wallet Security Report — all 4 sub-sections:
Basic Info table?
Transaction Timeline table + activity comment?
Risk Exposure Breakdown table?
High Risk Categories (text labels + one sentence each)?
☐ Cross-Vendor Risk Comparison: 4 markdown tables?
☐ Comprehensive Summary: 4–6 sentences?
☐ Exposure Detail Tables: 4 markdown tables?
☐ Risk Verdict block (last element)?
Any unchecked item → render it now before ending the response.
get_wallet_security{ "network": "Bitcoin|Ethereum|Tron", "walletAddress": "0x..." }
get_transaction_security{
"network": "Bitcoin|Ethereum|Tron",
"transactionDetails": [{
"hash": "0x...", "asset": "USDT",
"direction": "received|sent",
"from": "0x...", "to": "0x..."
}]
}
Wallet only → get_wallet_security only.
Transaction → call BOTH in parallel, present Transaction Report first:
get_transaction_securityget_wallet_security on the counterparty wallet| User role | Wallet to check |
|---|---|
| Recipient | from address (sender's wallet) |
| Sender | to address (recipient's wallet) |
High Risk Category descriptions (for the 🚨 High Risk Categories section):
For any category NOT in the list above, describe it based on its name and add one general sentence about its risk implications.
No MCP server configured → complete the steps below.
{
"mcp": {
"servers": {
"metacomp-security": {
"command": "npx",
"args": ["-y", "--package", "@metacomp/visionx-kyt-mcp", "visionx-kyt-mcp", "--token", "YOUR_API_KEY"]
}
}
},
"skills": {
"entries": {
"VisionX-KYT": {
"enabled": true
}
}
}
}
Download SKILL.md from github.com/metacomp-ai/remote-mcp, then:
mkdir -p ~/.openclaw/workspace/skills/VisionX-KYT
cp /path/to/SKILL.md ~/.openclaw/workspace/skills/VisionX-KYT/SKILL.md
No API key? Apply at metacomp.ai
401 after configuring? Re-apply for a new key at metacomp.ai.
tools
MetaComp + VisionX — one skill for all MetaComp account and Web3-security actions over the metacomp-mcp connector; routes to the matching scenario. Use it whenever the user wants to: DEPOSIT / receive funds (deposit, 充值, 入金, 收款, 收钱); WITHDRAW / cash out (withdraw, cash out, 提现, 出金, 转出, 取钱, withdrawal history, 出金记录); SWAP / exchange currency (swap, exchange, convert, 换汇, 换钱, "100k USDT to SGD", swap history, 换汇记录); GET A RATE / PRICE (汇率, 查汇率, 报价, 价格, "price X to Y", "X to Y rate", "how much is X in Y", "X 值多少 Y"); WEALTH / FIP (wealth, fixed income, subscribe, 理财, 买理财, 认购, FIP 申购); VIEW BALANCE / ASSETS (check balance, view assets, account overview, 查余额, 查看资产, 账户概览); or WEB3 SECURITY via VisionX (a wallet address 0x…/Bitcoin/Tron, a transaction hash, or any Web3 security / risk / scam / suspicious-activity question). Trigger even when the user doesn't say "MetaComp", as long as the intent is one of these; when unsure, load it and let the router (STEP ZERO) disambiguate.
tools
Withdraw funds out of MetaComp Withdrawal account. Trigger when the user mentions: withdraw, withdrawal, send money, cash out, 提现, 出金, 转出, 取钱, 我要出金, 我要提现.
testing
Subscribe to MetaComp Wealth / Fixed Income Products (FIP). Trigger when the user mentions: wealth, financial product, fixed income, subscribe, 理财, 理财产品, 买理财, 我想买一些理财, 了解理财, 认购理财.
development
Check Web3 wallet or transaction security using the MetaComp VisionX Trigger when the user mentions: wallet address (0x..., Bitcoin address, Tron address), transaction hash, or asks about Web3 security, risk, scam, or suspicious activity.