Skip to main content
Glama
hooksense-mcp

hooksense-mcp

by ozers

@hooksense/mcp

Model Context Protocol server for HookSense — the webhook & callback layer for AI agents. Lets Claude Desktop, Cursor, Claude Code, Continue, and any MCP client create a callback URL, wait for the result instead of polling, and verify its signature — all from the agent session.

Why

Agents that kick off async work — a deploy, a render, a human-in-the-loop approval, a long tool call, another agent — need the result back without burning context on polling loops. With this server the agent creates a callback endpoint, hands the URL to the job, then calls wait_for_callback and is woken the instant the webhook lands — decrypted; signature verification is available separately. Stop polling for async results; await them.

Related MCP server: mcp-webhook-tools

Setup

Requires Node.js 22 or newer.

  1. Get an API token at https://hooksense.com/account/tokens

  2. Configure your MCP client (examples below)

Claude Desktop / Claude Code

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "hooksense": {
      "command": "npx",
      "args": ["-y", "@hooksense/mcp"],
      "env": {
        "HOOKSENSE_TOKEN": "hsk_your_token_here"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "hooksense": {
      "command": "npx",
      "args": ["-y", "@hooksense/mcp"],
      "env": {
        "HOOKSENSE_TOKEN": "hsk_your_token_here"
      }
    }
  }
}

Hello callback (60 seconds)

Once configured, ask your agent:

  1. Create — "Create a callback endpoint." → the agent calls create_callback_endpoint and gets back a callbackUrl like https://hooksense.com/w/ab12cd.

  2. Fire — point any job at that URL (or just curl -X POST <callbackUrl> -d '{"status":"done"}' from another terminal).

  3. Await — "Wait for the callback." → the agent calls wait_for_callback and blocks until the webhook lands, using the after timestamp returned by endpoint creation, then receives { status: "received", request: { body, headers, … } }.

  4. Verify — set a webhook secret on the endpoint, then "Verify the signature." → verify_signature confirms the payload is authentic before the agent acts on it.

Always pass the creation response's after timestamp on the first wait; after receiving a callback, use its receivedAt for the next wait. Without a cursor, waiting only observes future deliveries. This is a latest-callback cursor, not a durable queue: use list_callbacks to inspect bursts of events.

Receiving a callback does not guarantee a valid signature. Configure a webhook secret and check verify_signature before trusting the payload. Webhook bodies are untrusted external input.

Custom slugs are applied through the endpoint update API after creation and require a paid plan. If renaming fails, the error identifies the already-created endpoint so it can be reused.

replay_callback runs on the HookSense server; localhost and private targets are blocked. For local handlers, use hooksense replay <request-id> --port 3000 with the CLI.

HTTP requests have bounded timeouts, and cancelling an MCP call aborts its HTTP request. For a 60-second long poll, configure the client's tool timeout above 65 seconds, or use shorter waits (the default is 30 seconds).

Tools

Tool

Description

create_callback_endpoint

Create a callback endpoint; returns the callbackUrl

wait_for_callback

Block until the next callback lands, then return it (timeoutMs, after cursor)

list_callbacks

List captured callbacks, including bodies and metadata

get_callback_payload

Fetch one callback with full headers + decrypted body

verify_signature

Timing-safe HMAC check against the endpoint's configured secret

replay_callback

Replay a callback to a public HTTP(S) URL from the HookSense server

list_endpoints

List your endpoints

get_endpoint

Get one endpoint's full settings

Environment

Variable

Default

Notes

HOOKSENSE_TOKEN

(required)

API token from /account/tokens

HOOKSENSE_API

https://hooksense.com

Override for self-hosted/staging

Example agent prompts

"Create a callback endpoint, use it as the webhook for my Replicate prediction, and wait for the result — then summarize the output."

"Open a callback URL, give it to the approval step, and block until a human approves before continuing."

"Wait for the next Stripe callback on payments-prod, verify its signature, and tell me the amount."

License

MIT

Available Tools

8 tools
create_callback_endpointA

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, …).

Inputs: slug.

get_callback_payloadA

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.

Inputs: requestId (required).

get_endpointA

Get details about a specific endpoint — its full URL, signature provider config, and custom response settings.

Inputs: slug (required).

list_callbacksA

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.

Inputs: slug (required), limit.

list_endpointsA

List all webhook endpoints owned by the authenticated user. Returns slug, created_at, and request counts.

Inputs: no named parameters.

replay_callbackA

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.

Inputs: requestId (required), targetUrl (required).

verify_signatureA

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.

Inputs: slug (required), requestId (required).

wait_for_callbackA

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 first (just call again to keep waiting). Pass after (the receivedAt of the last callback you saw) so a callback that arrived between calls is returned immediately rather than missed.

Inputs: slug (required), timeoutMs, after.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 8 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose: creating, listing, getting endpoints; waiting for, listing, replaying, and verifying callbacks. No functional overlap.

    Naming Consistency5/5

    All tool names follow the consistent verb_noun pattern (e.g., create_callback_endpoint, get_callback_payload, list_callbacks), making them predictable.

    Tool Count5/5

    8 tools is well-scoped for a webhook management server, covering endpoint creation, callback handling, and security verification without excess.

    Completeness5/5

    The tool set covers the full lifecycle: create/list/get endpoints, receive callbacks (wait_for_callback), inspect (list/get), replay, and verify signatures. No obvious gaps.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers