What it does
POST a 0x wallet address and receive a 0-100 trust score with an optional signal breakdown. Uses on-chain history — wallet age, activity patterns, transaction graph proximity to flagged addresses, and known-risk heuristics. Use before any on-chain interaction with an unknown counterparty: token transfers, contract calls, x402 payments to non-fleet endpoints. Cheaper, faster, and pay-per-call where commercial alternatives charge per-seat subscriptions.
When to use it
- Screen a counterparty wallet before sending tokens or executing a contract call
- Reputation gate for x402 payments to non-fleet endpoints
- Compliance check in an agent-driven payments pipeline
- Pre-flight check for any DeFi interaction with an unknown protocol
Request schema
{
"address": "0x1C680703D6cF7dfC9FEABb5AA28E64B869ddB3bC",
"include_detail": true
} Response schema
{
"address": "0x1C680703D6cF7dfC9FEABb5AA28E64B869ddB3bC",
"trust_score": 87,
"risk_level": "low",
"signals": {
"wallet_age_days": 96,
"tx_count": 412,
"flagged_proximity": 0,
"sanctions_match": false
},
"scored_at": "2026-05-15T12:00:00Z",
"payment_hash": "0x..."
} Code example — TypeScript via MCP
Install the MCP server once; all 22 services become tool calls.
// Configure @melis-ai/x402-tools-mcp in your MCP client
// Then call the tool:
const result = await mcpClient.callTool("kyaoracle", {
"address": "0x1C680703D6cF7dfC9FEABb5AA28E64B869ddB3bC",
"include_detail": true
});
console.log(result);
// ["address","trust_score","risk_level","signals","scored_at",... → MCP setup guide Code example — Python via direct HTTP
import requests
# x402 payment header must be set by your wallet client
# See x402.org for client libraries
headers = {
"Content-Type": "application/json",
"x-payment": "<signed-x402-payment-header>",
}
resp = requests.post(
"https://kyaoracle.melis.ai/score",
json={
"address": "0x1C680703D6cF7dfC9FEABb5AA28E64B869ddB3bC",
"include_detail": true
},
headers=headers,
)
print(resp.json()) Code example — curl with internal key bypass
For testing with an issued internal key (skips x402 payment flow):
curl -X POST https://kyaoracle.melis.ai/score \
-H "Content-Type: application/json" \
-H "x-internal-key: YOUR_KEY" \
-d '{"address":"0x1C680703D6cF7dfC9FEABb5AA28E64B869ddB3bC","include_detail":true}' How is this different from alternatives?
KYA Oracle vs Chainalysis / TRM Labs
Chainalysis and TRM Labs are enterprise-grade with broader coverage, deeper graph analysis, and regulator-grade reporting — but require account, contract, and seat licensing. KYA Oracle is x402-native pay-per-call at $0.005 with no signup. Use Chainalysis when you need court-defensible reports; use KYA Oracle for agent-time risk gating.
KYA Oracle vs LinkRisk
LinkRisk profiles URLs (off-chain). KYA Oracle profiles wallet addresses (on-chain). Different surfaces — pair them when an agent is acting on both web and blockchain inputs.
FAQ
Does it work without an account?
Yes. x402 is account-less. Your agent's wallet signs the payment and retries automatically. No registration, no API key, no subscription.
What happens on failure?
Returns HTTP 400 for malformed addresses (must be 0x + 40 hex chars). Returns HTTP 503 if the on-chain data backend is unavailable. No settlement on any non-2xx response.
What is the rate limit?
None published.
Is this open-source?
The service code is closed-source for security reasons. The MCP wrapper that calls it is open-source and MIT-licensed: github.com/mizukaizen/x402-tools-mcp .
Who built this?
Part of the melis.ai agent infrastructure stack. Running on a dedicated Helsinki VPS since early 2026. Contact sean@melis.ai.