{"name":"io.github.ozers/hooksense","slug":"ozers-hooksense","title":null,"description":"Webhook & callback layer for AI agents: create a URL, wait_for_callback, and verify over MCP.","url":"https://mcp.market/server/ozers-hooksense","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":22,"stars":2,"forks":0,"downloads_week":29,"last_push_at":"2026-07-06T20:17:38.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ozers/hooksense-mcp","website":null,"version":"0.2.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@hooksense/mcp","version":"0.2.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"API token from https://hooksense.com/account/tokens","isRequired":true,"format":"string","isSecret":true,"name":"HOOKSENSE_TOKEN"},{"description":"Override the API base URL (self-hosted / staging). Defaults to https://hooksense.com","format":"string","name":"HOOKSENSE_API"}]}],"tools":[{"name":"create_callback_endpoint","description":"Create a callback endpoint and return its URL. Hand this URL to a long-running/async job (or another agent) as its webhook/callback target, then await the result with wait_for_callback. Also works as a plain webhook capture URL for any provider (Stripe, GitHub, …).","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_callback_payload","description":"Fetch a single received callback with full headers, decrypted body, and metadata. Use this to read the result of an async job after wait_for_callback or list_callbacks gives you a callback id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_endpoint","description":"Get details about a specific endpoint — its full URL, signature provider config, and custom response settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_callbacks","description":"List callbacks received by an endpoint, newest first. Returns a summary (method, status, provider, received_at). Use `get_callback_payload` for the full body. Tip: read the newest `received_at` and pass it as `after` to wait_for_callback to wait only for what comes next.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_endpoints","description":"List all webhook endpoints owned by the authenticated user. Returns slug, created_at, and request counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"replay_callback","description":"Replay a received callback to a target URL. The original headers and body are re-sent unchanged — useful to re-drive your handler against a known payload without re-triggering the upstream event.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_signature","description":"Verify the HMAC signature of a received callback against the endpoint's configured secret (Stripe, GitHub, Shopify, or custom), using a timing-safe comparison. Returns whether the callback is authentic and untampered — call this before your agent acts on a payload. Requires the endpoint to have a webhook secret configured and a paid plan.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_callback","description":"Block until the next webhook (callback) arrives at an endpoint, then return it — instead of polling. Use this for async/long-running work: kick off the job with the endpoint URL as its callback, then call wait_for_callback to receive the result the moment it lands (signature-verified, decrypted). Returns { status: 'received', request } on delivery, or { status: 'pending' } if `timeoutMs` elapses f","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-26T11:35:21.310Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T11:35:21.352Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 82 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@hooksense/mcp","version":"0.2.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-06-24T16:44:41.008Z","repositoryUrl":"git+https://github.com/ozers/hooksense-mcp.git","weeklyDownloads":29}],"repo":{"found":true,"owner":"ozers","repo":"hooksense-mcp","archived":false,"pushedAt":"2026-07-06T20:17:38Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/22887208?v=4","ownerCreatedAt":"2016-10-17T12:03:56Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/22887208?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":0,"downloadsWeek":29,"license":"MIT","lastPushAt":"2026-07-06T20:17:38.000Z","score":22}}}},"grade_history":[],"reviews":[]}