nostr-wot
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 # view current thresholds
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:10000requireTop100— 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.
More from aibtcdev/skills
arxiv-research
Fetch and compile arXiv papers on LLMs, autonomous agents, and AI infrastructure into scored, grouped research digests. Stores digests at ~/.aibtc/arxiv-research/digests/. No API key required.
180aibtc-news
aibtc.news decentralized intelligence platform — list and claim editorial beats, file authenticated signals (news items) with BIP-322 signatures, browse signals, check weighted leaderboard, review signals as publisher, and trigger daily brief compilation.
168aibtc-news-correspondent
Correspondent for aibtc.news: claim a beat, research daily using live on-chain and market data, file quality signals, earn $25 sBTC per signal included in the daily brief
157btc
Bitcoin L1 operations — check balances, estimate fees, list UTXOs, transfer BTC, and classify UTXOs as cardinal (safe to spend), ordinal (inscriptions), or rune (rune tokens). Data sourced from mempool.space and the Unisat API.
151aibtc-news-fact-checker
Side role: find and correct bad signals, earn leaderboard points per Publisher-approved correction (max 3/day)
149defi
DeFi operations on Stacks — ALEX DEX token swaps and liquidity pool queries, plus Zest Protocol lending (supply, withdraw, borrow, repay, claim rewards). All operations are mainnet-only. Write operations require an unlocked wallet.
148