KAT Score is designed and optimized for autonomous AI agent wallets. Scores reflect a wallet's suitability as a trustworthy counterparty in agent-to-agent commerce — not general crypto wallet legitimacy. Non-agent wallets (exchange addresses, smart contracts, retail wallets) will receive contextual scores with scope_warning fields explaining the assessment.
Kael API Docs
Score any autonomous AI agent wallet with a single HTTP request. The Known Agent Trust (KAT) Score API returns a structured trust profile — 0 to 100, bond-style grade, five dimension scores, and plain-English reasoning — in milliseconds.
Quick Start
Everything you need in one request. Swap in your API key and any supported wallet address.
import requests
# Before transacting with an unknown agent
response = requests.post(
'https://kaelai.io/api/v1/score',
headers={'Authorization': 'Bearer kael_live_your_key'},
json={'wallet_address': '0x742d...', 'chain': 'eth'}
)
score = response.json()
if score['overall_score'] >= 60:
proceed_with_transaction()
elif score['overall_score'] >= 35:
proceed_with_reduced_limits()
else:
flag_for_review()// Before transacting with an unknown agent
const response = await fetch('https://kaelai.io/api/v1/score', {
method: 'POST',
headers: {
'Authorization': 'Bearer kael_live_your_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
wallet_address: '0x742d...',
chain: 'eth'
})
});
const score = await response.json();
if (score.overall_score >= 60) {
proceedWithTransaction();
} else if (score.overall_score >= 35) {
proceedWithReducedLimits();
} else {
flagForReview();
}# Score a wallet before transacting
curl -X POST https://kaelai.io/api/v1/score \
-H 'Authorization: Bearer kael_live_your_key' \
-H 'Content-Type: application/json' \
-d '{"wallet_address": "0x742d...", "chain": "eth"}'
# Returns immediately — use the score in your logic
# overall_score >= 60 → proceed
# overall_score 35–59 → proceed with caution
# overall_score < 35 → flag for reviewResponse:
{
"wallet_address": "0x1a2b3c4d5e6f...",
"overall_score": 78,
"grade": "A",
"confidence": 0.91,
"wallet_type": "autonomous_agent",
"risk_flag": "low_agent_fit",
"risk_flag_label": "No suspicious activity detected...",
"recommended_action": "proceed",
"recommended_action_label": "No suspicious activity detected. Safe to proceed based on your own risk tolerance.",
"dimension_scores": {
"behavioral_consistency": 17,
"transaction_legitimacy": 15,
"wallet_age_and_history": 18,
"counterparty_quality": 13,
"volume_stability": 15
},
"reasoning": "Established wallet with 2+ years of consistent on-chain activity.
Regular interaction patterns with reputable protocols.
Counterparty quality slightly reduced by two unverified
contract interactions in Q3. Overall profile is consistent
with a legitimate autonomous agent.",
"chain": "eth",
"transactions_analysed": 50,
"cache_hit": false,
"timestamp": "2026-03-26T01:00:00.000000+00:00"
}
Authentication
API keys are passed as Bearer tokens in the Authorization header.
Keys follow the format kael_live_[32 chars].
Get a key instantly at kaelai.io — self-serve, no waitlist.
Authorization: Bearer kael_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint Reference
Compute or retrieve a KAT Score for any EVM wallet. Required: wallet_address. Optional: chain (default eth), force_refresh (default false). Results are cached for 24 hours — cache hits return in single-digit milliseconds.
Returns an array of all KAT Score objects for the given wallet address, newest first. Every query — cached or fresh — is permanently logged, making history useful for tracking counterparty interest over time.
Returns trend direction (improving, declining, or stable), the score delta between oldest and newest in the window, and number of data points used.
Returns API status. Use this to verify connectivity before making scoring requests.
{ "status": "ok", "service": "kael" }
Request Parameters
Applies to POST /api/v1/score. Send as a JSON body.
| Parameter | Type | Description |
|---|---|---|
| wallet_address | string |
EVM wallet address in 0x format. Required. |
| chain | string |
Chain to query. Options: eth, base, polygon, bsc, arbitrum, btc, sol, avax, hype, tao. Default: eth. |
| force_refresh | boolean |
Bypass the 24-hour cache and compute a fresh score. Default: false. |
Response Schema
Every response includes a recommended_action field returning
proceed, review, or decline
— giving your integration an immediately actionable signal.
Check this field first before parsing the full response.
Every successful score response returns the following fields.
| Field | Type | Description |
|---|---|---|
| recommended_action | string |
Always check this first — the primary signal for programmatic decision making. Three values: proceed — trust signals sufficient, safe to transact. review — caution advised, manual review recommended. decline — high-risk patterns detected, recommend rejecting the transaction. |
| recommended_action_label | string |
Plain-English explanation of the recommended action, suitable for display to end users, audit logs, or downstream decision systems. |
| overall_score | integer 0–100 |
Composite trust score. Sum of the five dimension scores. |
| grade | string |
Bond-style grade from AAA to CCC. See Grade Scale. |
| confidence | float 0.0–1.0 |
Scoring confidence based on depth of on-chain data. More transactions = higher confidence. |
| cache_hit | boolean |
true if returned from the 24-hour cache. false if freshly computed. |
| cached_at | timestamp |
ISO 8601 timestamp of when the score was cached. Only present on cache hits. |
| dimension_scores | object |
Five dimension scores each 0–20: behavioral_consistency, transaction_legitimacy, wallet_age_and_history, counterparty_quality, volume_stability. |
| reasoning | string |
Plain-English explanation of the key factors driving the score, generated by the scoring model. |
| wallet_address | string |
Normalised lowercase wallet address as scored. |
| chain | string |
Chain identifier the wallet was scored on. |
| scored_at | timestamp |
ISO 8601 timestamp of when this score was originally computed. |
| wallet_type | string |
Wallet classification: autonomous_agent, retail_wallet, likely_exchange, smart_contract, insufficient_history, or unknown. |
| scope_warning | string or null |
Present when the wallet does not exhibit autonomous agent behavioral patterns. Explains the scoring context and how to interpret the score for non-agent wallet types. null when wallet_type is autonomous_agent. |
| risk_flag | string |
Three values: suspicious — genuine red flags detected (Sybil activity, draining patterns, burst manipulation). low_agent_fit — wallet is not suspicious but does not exhibit autonomous agent behavioral patterns. insufficient_data — not enough on-chain data for a reliable assessment. |
| risk_flag_label | string |
Plain-English explanation of the risk_flag value, suitable for display to end users or downstream agents making trust decisions. |
Grade Scale
KAT Scores map to a simplified bond-style grade. Use the grade as a quick programmatic trust signal.
Error Responses
All errors return JSON with a detail field describing what went wrong.
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key. |
| 403 | API key exists but is inactive. Contact us. |
| 422 | Invalid wallet address format. Must be 0x followed by 40 hex characters. |
| 500 | Scoring pipeline error. Try again or contact us if persistent. |
{ "detail": "Invalid API key." }
Rate Limits
During beta, rate limits are applied per API key. The default limit is 100 requests per hour. Contact us to request higher limits for your use case.
Supported Chains
| Chain | chain value |
|---|---|
| Bitcoin | btc |
| Ethereum | eth |
| Solana | sol |
| Base | base |
| BNB Smart Chain | bsc |
| Polygon | polygon |
| Arbitrum | arbitrum |
| Avalanche | avax |
| Hyperliquid | hype |
| Bittensor | tao |
On Bittensor, validators operate using two wallet types. Coldkeys hold funds and subnet registrations but have limited direct transaction history. Hotkeys contain all operational activity — weight setting, miner scoring, and validation extrinsics. For counterparty trust assessment in agent-to-agent commerce, scoring the hotkey address will return richer behavioural data and higher confidence scores than the coldkey. Both wallet types are supported — use
chain: tao for either address format.
Pricing
Simple, transparent pricing. Start free — pay only for what you use.
| Tier | Price | Queries | Notes |
|---|---|---|---|
| Free to Start | $0 | 100 on signup | No credit card required. Never expires. |
| Pay As You Go | $0.010 per query | Unlimited | No subscription, no minimum, no commitment. Card required. Billed monthly. |
Free to Start
- ✓ 100 complete KAT Score responses
- ✓ All 5 dimension scores, grade, reasoning, risk flag and recommended action
- ✓ 10 chain support including Bittensor / TAO
- ✓ No credit card required — never expires
Pay As You Go — $0.010 per query
- ✓ Everything in Free, plus:
- ✓ Unlimited queries — no monthly cap
- ✓ Full KAT Score intelligence on every query
- ✓ No minimum spend — no commitment — stop anytime
- ✓ Spending cap controls via kaelai.io/billing
Higher volume? Predictable monthly pricing is on the way.
|
Builder 🔒 $24.99/mo — founding member $29.99/mo — standard Annual subscriptions available — save up to 2 months |
|
Scale 🔒 $129.99/mo — founding member $149.99/mo — standard Annual subscriptions available — save up to 2 months |
|
Enterprise Custom |
Founding member pricing is locked in permanently for the first 200 paid subscribers while subscription remains active. Annual discount pricing will be displayed when subscriptions launch.
Pricing is in USD. Pay As You Go usage invoiced monthly via Stripe. No subscriptions currently active.
How billing works
Kael is designed to be frictionless to start and easy to scale. Here's how the transition from free to paid works.
Free tier
Every new account includes 100 free KAT Score queries. No credit card required. Queries never expire — use them at your own pace during evaluation and integration.
Running low
When you reach 20 queries remaining you will receive an email notification with a direct link to add a payment method. No action required to keep using your free allocation.
Grace period
When your free queries are exhausted your account enters a 7-day grace period with 50 additional queries included. This gives you time to add a payment method without interrupting an active integration — no code changes required.
Pay As You Go activation
Add a payment method at kaelai.io/billing before your grace period ends. Your account reactivates immediately. Queries are billed at $0.010 each, invoiced monthly via Stripe. No subscription, no minimum spend, no commitment.
If the grace period expires
If no payment method is added before the grace period ends your API key is paused and all requests return HTTP 402. Add a payment method at kaelai.io/billing at any time to reactivate instantly — no support ticket required.
Changelog
- Initial beta release
- KAT Score endpoint live —
POST /api/v1/score - Five-dimension scoring engine powered by on-chain data
- Redis 24-hour score caching
- Score history endpoint —
GET /score/{address}/history - Score trend endpoint —
GET /score/{address}/trend - 10 chains supported: ETH, Base, Polygon, BSC, Arbitrum, BTC, SOL, AVAX, HYPE, TAO