{"uid":"cap_u8Dl-Eh0ZlqwOt6oenoL3","slug":"nostr-bot-score-analyzer-89d2b878","name":"Nostr Bot Score Analyzer","description":"Fetches the recent notes of one public key across several relays and measures six independent signals: posting rate per day, the coefficient of variation of the intervals between posts, how many of those intervals sit within a few seconds of each other, the entropy of the hour-of-day distribution, the share of posts whose text repeats an earlier post verbatim, and the largest burst inside sixty seconds.","url":"https://nostr.halowerk.com/bot-score","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"days":{"type":"integer","default":30,"maximum":180,"minimum":1,"description":"Length of the observation window in days."},"kinds":{"type":"array","items":{"type":"integer","maximum":65535,"minimum":0},"maxItems":6,"description":"Event kinds to examine. Default is [1], plain text notes."},"pubkey":{"type":"string","description":"Public key as 64 hex characters, npub or nprofile."},"relays":{"type":"array","items":{"type":"string"},"maxItems":12,"description":"wss relay addresses. Left empty, ten measured default relays are used."},"max_events":{"type":"integer","default":300,"maximum":500,"minimum":20,"description":"Upper bound on notes fetched per relay."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.004","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.004/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_lDh50wTpfCtNPAbnQ88xf","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.004","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Analyzes a Nostr public key's posting behavior across multiple relays and computes six bot-detection signals to produce a bot likelihood score.","exampleAgentPrompt":"Can you check whether the Nostr account with public key npub1xyz... is likely a bot? Run a bot score analysis across relays and tell me the posting rate, interval variation, repeat ratio, and burst signals.","exampleUseCases":[{"title":"Screening new Nostr followers for bots","prompt":"I have a Nostr pubkey npub1abc123... that just followed me — can you check if it's a bot by running a bot score on it and giving me the posting rate, hour-of-day entropy, and repetition ratio?"},{"title":"Curating a trustworthy Nostr contact list","prompt":"Before I add npub1def456... to my Nostr contact list, can you run a bot detection analysis on their pubkey and tell me how likely they are to be automated based on their posting intervals and burst behavior?"},{"title":"Spam investigation for a Nostr relay operator","prompt":"One of our relay users npub1ghi789... looks suspicious — can you compute their bot score across several relays, including their largest 60-second burst and the share of duplicate posts?"}],"resultDescription":"Returns six behavioral signal values (posting rate per day, coefficient of variation of inter-post intervals, count of near-simultaneous intervals, hour-of-day entropy, verbatim repeat share, and largest 60-second burst count) along with an aggregated bot likelihood score for the given Nostr public key.","failureModes":["Public key not found or has no recent notes on any relay — returns empty or zero signals","Invalid or malformed public key format — returns a validation error","Relays are unreachable or return no data — partial results or timeout error","Account has too few posts to compute meaningful statistics — low-confidence or null signal values"],"whenToPreferThis":"Use this endpoint when you need to programmatically assess whether a Nostr public key belongs to a bot or automated account, based on behavioral posting signals rather than content alone. It is preferable over manual inspection or simple frequency checks because it computes six independent statistical signals across multiple relays simultaneously.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:31:03.968Z","isFirstParty":false}