| name | nostr-wot |
| description | Nostr Web of Trust — trust scoring and sybil detection for Nostr pubkeys. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+ zap-weighted trust edges. |
| metadata | {"author":"arc0btc","author-agent":"Trustless Indra","user-invocable":"false","arguments":"trust-score | sybil-check | neighbors | network-health | config | cache-status","entry":"nostr-wot/nostr-wot.ts","requires":"","tags":"read-only"} |
Deprecated: This skill has been consolidated into wot. Use the wot skill for all Web of Trust operations. This skill will not receive further updates.
Nostr Web of Trust Skill
Pre-transaction counterparty risk assessment using Nostr Web of Trust scores. Accepts hex pubkeys or npub1... bech32 addresses.
- 52K+ pubkeys indexed with 2.4M+ trust edges
- Trust edges weighted by zap receipts (economic signal, harder to fake)
- Free tier:
wot.klabo.world (50 req/day per IP), no key required
- Paid fallback:
maximumsats.com/api/wot-report (100 sats via L402) when free tier exhausted
- 1-hour local cache to avoid redundant API calls
Usage
bun run nostr-wot/nostr-wot.ts <subcommand> [options]
Subcommands
trust-score
Look up WoT trust score, rank, and percentile. Checks against configurable thresholds.
bun run nostr-wot/nostr-wot.ts trust-score --pubkey 2b4603d2...
bun run nostr-wot/nostr-wot.ts trust-score --npub npub1abc...
Output:
{
"success": true,
"cached": false,
"api": "free",
"pubkey": "2b4603d2...",
"trusted": true,
"normalized_score": 87,
"rank": 142,
"percentile": 99.7
}
sybil-check
Classify a pubkey as normal, suspicious, or likely_sybil using follower quality, mutual trust ratio, and community integration signals.
bun run nostr-wot/nostr-wot.ts sybil-check --pubkey 2b4603d2...
bun run nostr-wot/nostr-wot.ts sybil-check --npub npub1abc...
Output:
{
"success": true,
"pubkey": "2b4603d2...",
"classification": "normal",
"is_sybil": false,
"is_suspicious": false
}
neighbors
Discover trust graph neighbors — connected pubkeys with combined trust scores.
bun run nostr-wot/nostr-wot.ts neighbors --pubkey 2b4603d2...
network-health
Graph-wide stats: total nodes, edges, Gini coefficient, power law alpha. No pubkey required.
bun run nostr-wot/nostr-wot.ts network-health
config
View or update trust thresholds. Stored at ~/.aibtc/nostr-wot/config.json.
bun run nostr-wot/nostr-wot.ts config
bun run nostr-wot/nostr-wot.ts config --min-rank 5000
bun run nostr-wot/nostr-wot.ts config --require-top100
bun run nostr-wot/nostr-wot.ts config --no-require-top100
Threshold fields:
minRank — Maximum acceptable rank. Default: 10000
requireTop100 — Reject if not in top 100. Default: false
cache-status
Show cache statistics. Cache stored at ~/.aibtc/nostr-wot/cache.json with 1-hour TTL.
bun run nostr-wot/nostr-wot.ts cache-status
Trust Thresholds
| Rank | Meaning |
|---|
| 1–100 | Elite (top 100 Nostr users by WoT) |
| 101–1000 | Well-connected, high economic activity |
| 1001–10000 | Active community member |
| >10000 | Low trust, new account, or no Nostr activity |
API Details
Two endpoints, tried in order:
| Base | Auth | Cost | Rate |
|---|
https://wot.klabo.world | None | Free | 50 req/day/IP |
https://maximumsats.com/api/wot-report | L402 | 100 sats | Unlimited |
Free tier returns HTTP 402 when exhausted; skill auto-falls back to paid endpoint. L402 payment requires a Lightning client — without one, paid calls return an error with the BOLT11 invoice.