{"uid":"cap_b4SbLleleJ00LODh9JfC-","slug":"x402-gateway-wallet-verify-nostr-d49780f9","name":"x402-gateway: wallet_verify_nostr","description":"x402-gateway tool: wallet_verify_nostr — Verify a NIP-98 Nostr HTTP auth event. Returns the signer pubkey. Stateful replay protection: each event id can only be verified once.","url":"https://x402.freeq.one/tools/wallet_verify_nostr","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"url":{"type":"string","description":"Expected u-tag URL (optional; defaults to the request URL)"},"token":{"type":"string","description":"Base64-encoded NIP-98 event, or 'Nostr <base64>' Authorization header value"}}},"responseSchema":{"type":"json","example":{"result":{}}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","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.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_4jyoIQgeJPOPPF422B9Cz","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Verifies a NIP-98 Nostr HTTP authentication event and returns the signer's public key, with stateful replay protection ensuring each event ID is only accepted once.","exampleAgentPrompt":"Verify this NIP-98 Nostr HTTP auth event for a POST request with JSON body — confirm the signature is valid and tell me the signer's public key.","exampleUseCases":[{"title":"Authenticate Nostr-signed API request","prompt":"I have an incoming POST request from a user who signed it with their Nostr key using NIP-98. Can you verify the auth event, check it hasn't been replayed, and return their public key so I can grant them access?"},{"title":"Gating content behind Nostr identity","prompt":"Before letting someone access this resource, I need to verify their NIP-98 Nostr signature on the HTTP request — can you validate it and extract their pubkey so I can match it against my allowlist?"},{"title":"Replay attack prevention for Nostr auth","prompt":"Someone is trying to authenticate with a NIP-98 event that looks like it might have been used before. Can you verify the event and check whether this event ID has already been seen?"}],"resultDescription":"Returns the signer's Nostr public key if the NIP-98 event is valid and has not been previously used. Stateful replay protection means each unique event ID is recorded server-side and rejected on reuse, preventing replay attacks.","failureModes":["Invalid or malformed NIP-98 event structure — returns verification failure","Replay detected: event ID already used — returns rejection indicating duplicate","Signature mismatch — public key does not match the event signature","Missing required fields (type, method, bodyType, body) — returns schema validation error","Payment failure via x402 protocol — call not executed"],"whenToPreferThis":"Use this endpoint when you need to authenticate users via their Nostr identity using the NIP-98 HTTP Auth standard, especially when replay protection is critical. Prefer this over a simple signature check when you need server-side stateful enforcement that each auth token is single-use. Ideal for Nostr-native applications, decentralized identity flows, or any system where users authenticate with a Nostr keypair rather than traditional credentials.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:39:53.723Z","isFirstParty":false}