{"x402Version":2,"type":"bazaar-listing","service":{"name":"HALOWERK nostrwerk","url":"https://nostr.halowerk.com","version":"1.0.0","icon":"https://nostr.halowerk.com/favicon.svg"},"items":[{"id":"nostrwerk.nostr_zap_radar","name":"nostr_zap_radar","title":"Aggregates the Lightning zaps received by one Nostr public key across several open relays, with the amount taken from the decoded BOLT-11 invoice rather than from the claimed tag.","description":"Collects kind 9735 zap receipts addressed to one public key over up to twelve relays, merges them by event id and reports who sent how much over the requested window. Every amount comes from decoding the BOLT-11 invoice carried in the receipt, not from the amount tag of the zap request, because the two can disagree and only the invoice was payable.","category":"nostrwerk","keywords":["nostr zaps","lightning zap receipts","nip-57","zap aggregation","npub earnings"],"resource":"https://nostr.halowerk.com/zap-radar","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["pubkey"],"additionalProperties":false,"properties":{"pubkey":{"type":"string","description":"Recipient public key as 64 hex characters, npub or nprofile."},"days":{"type":"integer","minimum":1,"maximum":365,"default":30,"description":"Length of the window in days, counted back from now."},"relays":{"type":"array","maxItems":12,"items":{"type":"string"},"description":"wss relay addresses. Left empty, ten measured default relays are used."},"max_receipts":{"type":"integer","minimum":10,"maximum":400,"default":200,"description":"Upper bound on receipts fetched per relay. Reaching it sets truncated."},"top_senders":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"How many senders the ranking lists."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_zap_radar","tags":["nostr","lightning","zaps"],"example_request":{"pubkey":"npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m","days":30},"requestExample":{"pubkey":"npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m","days":30}},{"id":"nostrwerk.nostr_event_sign","name":"nostr_event_sign","title":"Builds NIP-01 events and produces valid BIP-340 Schnorr signatures, either as a sign-ready preimage for a key the caller keeps, or fully signed with a throwaway key generated for that one call.","description":"Three modes over the same event structure. In preimage mode the caller supplies a public key and the event fields; the answer holds the exact NIP-01 serialisation, the SHA-256 event id derived from it and the 32 bytes to sign, so the caller signs locally and no secret key ever crosses the connection.","category":"nostrwerk","keywords":["nostr event signing","schnorr signature","bip-340","nip-01 event id","ephemeral nostr key"],"resource":"https://nostr.halowerk.com/event-sign","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","additionalProperties":false,"properties":{"mode":{"type":"string","enum":["preimage","ephemeral","verify"],"default":"preimage","description":"preimage: caller signs locally. ephemeral: single-use key generated here. verify: check a complete event."},"pubkey":{"type":"string","description":"Public key as hex or npub. Required in preimage mode, ignored otherwise."},"kind":{"type":"integer","minimum":0,"maximum":65535,"default":1,"description":"NIP-01 event kind. 1 is a text note, 30023 a long-form article."},"content":{"type":"string","maxLength":64000,"default":"","description":"Event content."},"tags":{"type":"array","maxItems":200,"items":{"type":"array","items":{"type":"string"}},"description":"NIP-01 tags, each an array of strings, for example [\"t\",\"bitcoin\"]."},"created_at":{"type":"integer","minimum":0,"description":"Unix seconds. Left out, the current time is used."},"event":{"type":"object","description":"The complete event to check. Only used in verify mode."}}},"outputSchema":{"type":"object"},"price":{"amount":"1000","currency":"USDC","decimals":6,"human":"0.001 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_event_sign","tags":["nostr","signature","bip-340"],"example_request":{"mode":"preimage","pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","kind":1,"content":"hello nostr","tags":[["t","bitcoin"]]},"requestExample":{"mode":"preimage","pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","kind":1,"content":"hello nostr","tags":[["t","bitcoin"]]}},{"id":"nostrwerk.nostr_relay_health","name":"nostr_relay_health","title":"Measures up to twelve Nostr relays in parallel: connection time, whether a real REQ query is answered with EOSE, whether NIP-42 authentication is demanded, and what the NIP-11 document declares.","description":"Every relay is measured twice over. Over WebSocket a genuine REQ query is sent and the connection time, the time to end of stored events and the number of events returned are recorded — a relay that accepts the connection and then stays silent is the failure mode a reachability ping cannot see.","category":"nostrwerk","keywords":["nostr relay health","relay latency","nip-11","nip-42 auth","relay uptime check"],"resource":"https://nostr.halowerk.com/relay-health","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","additionalProperties":false,"properties":{"relays":{"type":"array","maxItems":12,"minItems":1,"items":{"type":"string"},"description":"wss relay addresses. Left empty, ten measured default relays are used."},"timeout_ms":{"type":"integer","minimum":500,"maximum":6000,"default":4000,"description":"Time limit per relay in milliseconds."},"probe_kind":{"type":"integer","minimum":0,"maximum":65535,"default":1,"description":"Event kind used for the probe query."},"read_nip11":{"type":"boolean","default":true,"description":"Also read the NIP-11 information document over https."}}},"outputSchema":{"type":"object"},"price":{"amount":"3000","currency":"USDC","decimals":6,"human":"0.003 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_relay_health","tags":["nostr","relay","monitoring"],"example_request":{"relays":["wss://nos.lol","wss://relay.primal.net"],"timeout_ms":4000},"requestExample":{"relays":["wss://nos.lol","wss://relay.primal.net"],"timeout_ms":4000},"outputExample":{"measured_at":"2026-10-22T23:37:34.515Z","relays":[{"relay":"wss://nos.lol","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":5,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: nos.lol","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: nos.lol"}},{"relay":"wss://relay.primal.net","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":2,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: relay.primal.net","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: relay.primal.net"}},{"relay":"wss://nostr.mom","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":2,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: nostr.mom","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: nostr.mom"}},{"relay":"wss://relay.snort.social","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":2,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: relay.snort.social","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: relay.snort.social"}},{"relay":"wss://purplerelay.com","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":2,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: purplerelay.com","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: purplerelay.com"}},{"relay":"wss://relay.nostr.net","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":1,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: relay.nostr.net","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: relay.nostr.net"}},{"relay":"wss://offchain.pub","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":1,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: offchain.pub","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: offchain.pub"}},{"relay":"wss://nostr.oxtr.dev","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":1,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: nostr.oxtr.dev","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: nostr.oxtr.dev"}},{"relay":"wss://relay.nostrplebs.com","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":1,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: relay.nostrplebs.com","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: relay.nostrplebs.com"}},{"relay":"wss://relay.mostr.pub","verdict":"unreachable","reachable":false,"connect_ms":null,"eose":false,"total_ms":0,"events_returned":0,"auth_required":false,"error":"Name nicht auflösbar: relay.mostr.pub","notice":null,"resolved_addresses":null,"nip11":{"available":false,"reason":"Name nicht auflösbar: relay.mostr.pub"}}],"summary":{"total":10,"healthy":0,"auth_required":0,"unreachable":10,"median_connect_ms":null,"fastest":null,"recommended":[]},"verdict_scale":{"healthy":"connected, answered the REQ query with EOSE and returned at least one event","healthy_paid":"as healthy, but the NIP-11 document declares payment_required","reachable_but_empty":"connected and reached EOSE, but returned no event for the probe kind","answers_without_eose":"connected and sent events, but never reached end of stored events within the limit","auth_required":"demands NIP-42 authentication; without it this relay returns nothing","unreachable":"no connection, name unresolvable, or closed before an answer"},"method":"One WebSocket REQ query plus one https NIP-11 read per relay, all relays in parallel, single point in time from one location.","max_relays":12}},{"id":"nostrwerk.nostr_rss_to_events","name":"nostr_rss_to_events","title":"Reads an RSS 2.0 or Atom feed and returns sign-ready NIP-01 events, each with its correct id, r tag for the source link and t tags for the feed categories.","description":"Fetches the feed over https with redirect and size limits, recognises RSS 2.0, RDF and Atom, and converts each entry into a NIP-01 event. Kind 1 produces a short note built from title, optional shortened summary and the link; kind 30023 produces a long-form article carrying the full entry text plus the title, published_at and d tags that NIP-23 expects.","category":"nostrwerk","keywords":["rss to nostr","atom feed to nip-01","nostr bridge events","feed publishing bot","unsigned nostr events"],"resource":"https://nostr.halowerk.com/rss-to-nostr","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["feed_url"],"additionalProperties":false,"properties":{"feed_url":{"type":"string","description":"https address of the RSS or Atom feed."},"pubkey":{"type":"string","description":"Public key as hex or npub of the account that will sign. Given, every event carries its computed id."},"kind":{"type":"integer","enum":[1,30023],"default":1,"description":"1 for short notes, 30023 for NIP-23 long-form articles."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"How many of the newest entries to convert."},"include_summary":{"type":"boolean","default":true,"description":"Include the entry summary in a kind 1 note. Ignored for kind 30023."},"summary_max_chars":{"type":"integer","minimum":80,"maximum":2000,"default":480,"description":"Maximum summary length in a kind 1 note before it is cut at a word boundary."},"since_unix":{"type":"integer","minimum":0,"description":"Only convert entries published at or after this Unix timestamp. Entries without a date are kept."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_rss_to_events","tags":["nostr","rss","atom","bridge"],"example_request":{"feed_url":"https://blog.cloudflare.com/rss/","kind":1,"limit":3},"requestExample":{"feed_url":"https://blog.cloudflare.com/rss/","kind":1,"limit":3}},{"id":"nostrwerk.nostr_nip05_verify","name":"nostr_nip05_verify","title":"Resolves a NIP-05 identifier such as name@domain against the domain well-known document and reports which public key the domain actually confirms.","description":"Fetches https://domain/.well-known/nostr.json with the name query parameter and reads the mapping the domain publishes. The answer states the resolved public key in hex and as npub, the relay hints the document lists for that key, and the HTTP status and final URL after redirects, so a redirect to a login page is distinguishable from a genuine answer.","category":"nostrwerk","keywords":["nip-05 verification","nostr identifier dns","nostr address check","well-known nostr.json","npub domain proof"],"resource":"https://nostr.halowerk.com/nip05-verify","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["identifier"],"additionalProperties":false,"properties":{"identifier":{"type":"string","description":"NIP-05 identifier as name@domain, or a bare domain for the root identifier _@domain."},"expect_pubkey":{"type":"string","description":"Public key as hex, npub or nprofile that the domain is expected to confirm."}}},"outputSchema":{"type":"object"},"price":{"amount":"1000","currency":"USDC","decimals":6,"human":"0.001 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_nip05_verify","tags":["nostr","nip-05","identity"],"example_request":{"identifier":"_@fiatjaf.com"},"requestExample":{"identifier":"_@fiatjaf.com"}},{"id":"nostrwerk.nostr_follower_graph","name":"nostr_follower_graph","title":"Reads the NIP-02 contact list of a public key across several relays and returns a JSON graph of nodes and edges, optionally including the contact lists of its contacts and the mutual follows between them.","description":"Fetches kind 3 contact lists over up to twelve relays. Because kind 3 is replaceable, several relays regularly hold different versions; only the one with the highest created_at is used and the answer states which relays carried that version and how many older versions were seen, so a stale relay never quietly overwrites a current list. At depth 1 the answer is the account and its outgoing follows.","category":"nostrwerk","keywords":["nostr contact list","nip-02 follows","social graph nostr","mutual follows","follower network json"],"resource":"https://nostr.halowerk.com/follower-graph","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["pubkey"],"additionalProperties":false,"properties":{"pubkey":{"type":"string","description":"Public key as 64 hex characters, npub or nprofile."},"depth":{"type":"integer","enum":[1,2],"default":1,"description":"1 returns the account and its follows. 2 also fetches the contact lists of its contacts."},"max_contacts":{"type":"integer","minimum":1,"maximum":500,"default":200,"description":"Upper bound on contacts reported for the root account."},"second_degree_sample":{"type":"integer","minimum":1,"maximum":25,"default":15,"description":"How many contact lists to fetch at depth 2. Higher values cost time, not money."},"relays":{"type":"array","maxItems":12,"items":{"type":"string"},"description":"wss relay addresses. Left empty, ten measured default relays are used."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_follower_graph","tags":["nostr","nip-02","graph"],"example_request":{"pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","depth":1},"requestExample":{"pubkey":"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","depth":1}},{"id":"nostrwerk.nostr_lnurl_invoice","name":"nostr_lnurl_invoice","title":"Resolves an LNURL, a Lightning address or a Nostr public key into a payable BOLT-11 invoice and verifies the returned invoice against the amount that was requested.","description":"Accepts three forms of recipient. A bech32 lnurl is decoded to its callback URL, a Lightning address is resolved through the well-known lnurlp path, and a Nostr public key is resolved by reading its kind 0 profile from relays and taking the lud16 or lud06 field it publishes.","category":"nostrwerk","keywords":["lnurl pay to invoice","lightning address invoice","bolt11 from lnurl","nostr zap invoice","lud16 resolver"],"resource":"https://nostr.halowerk.com/lnurl-invoice","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["recipient","amount_sats"],"additionalProperties":false,"properties":{"recipient":{"type":"string","description":"lnurl1… string, Lightning address name@domain, or a Nostr public key as hex, npub or nprofile."},"amount_sats":{"type":"integer","minimum":1,"maximum":100000000,"description":"Amount in satoshi. Must lie within the limits the service declares."},"comment":{"type":"string","maxLength":500,"description":"Comment for the payment. Only sent if the service allows comments and only up to the length it allows."},"zap_request":{"type":"object","description":"A signed NIP-57 kind 9734 zap request. Only sent if the service declares allowsNostr."},"relays":{"type":"array","maxItems":12,"items":{"type":"string"},"description":"wss relay addresses used only when the recipient is a Nostr public key."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_lnurl_invoice","tags":["nostr","lightning","lnurl"],"example_request":{"recipient":"jack@primal.net","amount_sats":21},"requestExample":{"recipient":"jack@primal.net","amount_sats":21}},{"id":"nostrwerk.nostr_key_convert","name":"nostr_key_convert","title":"Converts Nostr identifiers between hex and the NIP-19 bech32 forms npub, note, nprofile, nevent and naddr, including the relay hints, author and kind carried in the TLV forms.","description":"Takes any public NIP-19 identifier or a 64-character hex value and returns every representation it can be expressed as. A decoded nprofile or nevent yields not only the key or event id but also the relay hints, the author and the kind that the TLV form carries — precisely the fields that make a follow-up query targeted, and precisely what is lost by code that only handles npub.","category":"nostrwerk","keywords":["npub to hex","hex to npub","nip-19 decode","nprofile nevent naddr","nostr identifier converter"],"resource":"https://nostr.halowerk.com/key-convert","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["input"],"additionalProperties":false,"properties":{"input":{"type":"string","description":"npub, note, nprofile, nevent, naddr, or 64 hex characters."},"assume":{"type":"string","enum":["pubkey","event_id","both"],"default":"both","description":"How to read bare hex. Ignored for bech32 input, which is unambiguous."},"relays":{"type":"array","maxItems":8,"items":{"type":"string"},"description":"wss relay hints to embed in the generated nprofile, nevent or naddr."},"author":{"type":"string","description":"Author public key as hex or npub, for building an nevent or naddr."},"kind":{"type":"integer","minimum":0,"maximum":65535,"description":"Event kind for the generated nevent or naddr."},"identifier":{"type":"string","maxLength":200,"description":"The d tag value for building an naddr. Requires author and kind."}}},"outputSchema":{"type":"object"},"price":{"amount":"1000","currency":"USDC","decimals":6,"human":"0.001 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_key_convert","tags":["nostr","nip-19","bech32"],"example_request":{"input":"npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6","assume":"both"},"requestExample":{"input":"npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6","assume":"both"}},{"id":"nostrwerk.nostr_bot_score","name":"nostr_bot_score","title":"Rates how mechanical the posting behaviour of a Nostr public key looks, from six measured timing and repetition signals, with every threshold and every contribution stated in the answer.","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.","category":"nostrwerk","keywords":["nostr bot detection","spam score npub","posting frequency analysis","automated account nostr","timing regularity"],"resource":"https://nostr.halowerk.com/bot-score","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["pubkey"],"additionalProperties":false,"properties":{"pubkey":{"type":"string","description":"Public key as 64 hex characters, npub or nprofile."},"days":{"type":"integer","minimum":1,"maximum":180,"default":30,"description":"Length of the observation window in days."},"max_events":{"type":"integer","minimum":20,"maximum":500,"default":300,"description":"Upper bound on notes fetched per relay."},"kinds":{"type":"array","maxItems":6,"items":{"type":"integer","minimum":0,"maximum":65535},"description":"Event kinds to examine. Default is [1], plain text notes."},"relays":{"type":"array","maxItems":12,"items":{"type":"string"},"description":"wss relay addresses. Left empty, ten measured default relays are used."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_bot_score","tags":["nostr","spam","scoring"],"example_request":{"pubkey":"npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6","days":30},"requestExample":{"pubkey":"npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6","days":30}},{"id":"nostrwerk.nostr_zap_receipt_check","name":"nostr_zap_receipt_check","title":"Verifies a NIP-57 zap receipt end to end: its own signature, the enclosed zap request, the BOLT-11 invoice, the hash tying invoice to request, and whether the issuer is the key the recipient LNURL service actually names.","description":"Takes a kind 9735 receipt directly or fetches it from relays by event id, then runs eight named checks and reports each one separately with its reason. The receipt signature and the signature of the zap request enclosed in the description tag are verified per BIP-340. The invoice is decoded and its amount is compared against the amount tag of the zap request, since those two can disagree and only the invoice was payable.","category":"nostrwerk","keywords":["zap receipt verification","nip-57 check","kind 9735 validation","bolt11 description hash","fake zap detection"],"resource":"https://nostr.halowerk.com/zap-receipt-check","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","additionalProperties":false,"properties":{"receipt":{"type":"object","description":"The complete kind 9735 event. Either this or event_id is required."},"event_id":{"type":"string","description":"Event id of the receipt as hex, note or nevent. Fetched from the relays when receipt is not given."},"recipient_lightning_address":{"type":"string","description":"Lightning address of the recipient, for example name@domain. Given, the issuer is compared against the nostrPubkey published there."},"relays":{"type":"array","maxItems":12,"items":{"type":"string"},"description":"wss relay addresses used when fetching by event_id."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}],"serviceName":"nostr_zap_receipt_check","tags":["nostr","nip-57","lightning"],"example_request":{"event_id":"99d03821f7f8b73bc1e8ef0466ca3baed869d42d1ae224be4a9396a8b6bdd16d","relays":["wss://nos.lol","wss://relay.primal.net"]},"requestExample":{"event_id":"99d03821f7f8b73bc1e8ef0466ca3baed869d42d1ae224be4a9396a8b6bdd16d","relays":["wss://nos.lol","wss://relay.primal.net"]}}],"capability_request":{"url":"https://bedarf.halowerk.com/capabilities/request","method":"POST","cost":"free","description":"Missing a capability, or does the scope not fit? Report the need here - no payment required. Similar reports are bundled; the response returns an id you can check back on.","body_example":{"requested_capability":"short label","description":"what exactly is needed","max_price":0.01}},"updated_at":"2026-11-13T18:53:30.183Z"}