text
☐ 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)
FieldDetailDatedateDirectiondirection (received / sent)Assetasset.assetAmountasset.amountUSD Value$asset.usdValue USDFromfromAddressTotoAddressRisk Level🟢 Low / 🟡 Medium / 🟠 Medium-High / 🔴 High / 🔴 Severe (treat as High) — from txRiskLevelDirect ExposureYes / No
⚠️ Risk Sources
Risk TypeRatioInterpretationsource``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
FieldDetailAddressdata.addressNetworkdata.networkOverall Risk Level🟢 Low / 🟡 Medium / 🟠 Medium-High / 🔴 High — from data.level. Map "Severe" → 🔴 High. Any other unrecognized level → display raw value with 🔴
FieldDetailEarliest Transactiondata.extra.earliestTransactionTimeLatest Transactiondata.extra.latestTransactionTimeTotal Incoming$data.extra.totalIncoming USDTotal Outgoing$data.extra.totalOutgoing USD
Briefly comment on activity span and volume (long-standing vs newly created, notable volume?).
DirectionTotalLow RiskHigh RiskHigh 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:
If list empty: "✅ No high-risk categories detected."
For any category NOT in the list above, 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:
TableTitleVendor 1Vendor 2Vendor 31📥 Direct Incomingdata.extra.beosin.directIncoming``data.extra.elliptic.directIncoming``data.extra.merklescience.directIncoming2📤 Direct Outgoingdata.extra.beosin.directOutgoing``data.extra.elliptic.directOutgoing``data.extra.merklescience.directOutgoing3📥 Indirect Incomingdata.extra.beosin.indirectIncoming``data.extra.elliptic.indirectIncoming``data.extra.merklescience.indirectIncoming4📤 Indirect Outgoingdata.extra.beosin.indirectOutgoing``data.extra.elliptic.indirectOutgoing``data.extra.merklescience.indirectOutgoing
Table format:
🔍 Cross-Vendor Risk Comparison
📥 Direct Incoming — Cross-Vendor Risk Flags
CategoryVendor 1Vendor 2Vendor 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)
CategoryAmount (USD)RatioRisktagTypeVerbose``≈ $totalValueUsd``ratio > 0 ? ratio% : "< 0.01%"⚠️ High Risk / ✅ Low Risk
If empty: — No direct incoming exposure recorded —
📥 Indirect Incoming Exposure ( data.extra.indirectIncoming)
CategoryAmount (USD)RatioRisktagTypeVerbose``≈ $totalValueUsd``ratio > 0 ? ratio% : "< 0.01%"⚠️ High Risk / ✅ Low Risk
If empty: — No indirect incoming exposure recorded —
📤 Direct Outgoing Exposure ( data.extra.directOutgoing)
CategoryAmount (USD)RatioRisktagTypeVerbose``≈ $totalValueUsd``ratio > 0 ? ratio% : "< 0.01%"⚠️ High Risk / ✅ Low Risk
If empty: — No direct outgoing exposure recorded —
📤 Indirect Outgoing Exposure ( data.extra.indirectOutgoing)
CategoryAmount (USD)RatioRisktagTypeVerbose``≈ $totalValueUsd``ratio > 0 ? ratio% : "< 0.01%"⚠️ High Risk / ✅ Low Risk
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 Risktext
---
🚨 Risk Verdict — [risk level label]
[1–2 sentence verdict summarizing the most important finding]
⚡ Recommendation: [freely interact / proceed with caution / avoid / report]
---
Transaction:
text
☐ Analysis Preface: 3 paragraphs (Vendors / Methodology / Research)?
☐ Transaction Security Report: info table + Risk Sources + Comprehensive Summary?
Wallet:
text
☐ 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#json
{ "network": "Bitcoin|Ethereum|Tron", "walletAddress": "0x..." }
get_transaction_security#json
{
"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 walletUser roleWallet to checkRecipientfrom address (sender's wallet)Senderto address (recipient's wallet)
No MCP server configured → complete the steps below.
json
{
"mcp": {
"servers": {
"metacomp-security": {
"command": "npx",
"args": ["-y", "--package", "@metacomp/visionx-kyt-mcp", "visionx-kyt-mcp", "--token", "YOUR_API_KEY"]
}
}
},
"skills": {
"entries": {
"metacomp_visionx_kyt": {
"enabled": true
}
}
}
}
Download SKILL.md from github.com/metacomp-ai/remote-mcp, then:
bash
mkdir -p ~/.openclaw/workspace/skills/metacomp_visionx_kyt
cp /path/to/SKILL.md ~/.openclaw/workspace/skills/metacomp_visionx_kyt/SKILL.md
No API key? Apply at metacomp.ai
401 after configuring? Re-apply for a new key at metacomp.ai.