hooklens
Captures, inspects, and debugs GitHub webhooks sent to a Hooklens bin URL, enabling inspection of repository or event payloads.
Captures, inspects, and debugs Stripe webhooks sent to a Hooklens bin URL, including signature-header spotting and one-click replay.
Captures, inspects, and debugs Twilio webhooks sent to a Hooklens bin URL for real-time request inspection and replay.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hooklenscreate a new webhook bin and give me the URL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
$ hooklens_
Catch, inspect & debug webhooks in real time — a bin URL that records every request, a terminal UI that explains every payload, and MCP tools so your AI agent debugs webhooks itself.
Live App · Bins · Docs · MCP · Issues
✨ Features
📥 Bin URLs that catch anything —
POST /api/hook/:idaccepts GET/POST/PUT/PATCH/DELETE, stores headers + query + body (256 KB cap), answers in ms🔍 Deterministic inspector — JSON/form/XML detection, signature-header spotting, malformed-body + missing-signature warnings, one-click replay
curl, JSON export🔗 Hash-sealed captures —
SHA-384(prevSeal ‖ canonicalJson)chained per bin,seal ok / BROKENshown inline, re-verifiable offline🤖 MCP tools that mutate —
create_bin,list_bins,get_requests,inspect_request,clear_bin+ live in-page console🖥️ Terminal identity — phosphor green, scanlines, blinking cursor, live polling stream; zero globes were harmed
🗄️ Real Postgres (Neon) — bins and captures survive redeploys; full CRUD through UI, REST, and agents
Related MCP server: hookray-mcp
🏗️ System architecture
flowchart LR
S[senders: Stripe GitHub Twilio] --> H["/api/hook/:id"]
H --> P[(Neon Postgres)]
P --> UI["/bins/:id live stream"]
P --> R["REST: bins + requests + export"]
P --> M["/api/mcp 5 tools"]
I["inspectRequest()"] --> UI
I --> R
I --> M
classDef live fill:#22d3ee,color:#04060c
classDef engine fill:#a78bfa,color:#04060c
classDef agent fill:#34d399,color:#04060c
classDef ext fill:#fbbf24,color:#04060c
class S ext
class H,P,UI,R live
class I engine
class M agent🌊 Capture pipeline
flowchart TB
R[HTTP hit any method] --> B{bin exists?}
B -->|no| N[404]
B -->|yes| C[cap headers + query + body]
C --> S["seal = SHA-384(prev + json)"]
S --> W[insert + bump count]
W --> J["200 {ok, id, seal}"]
classDef live fill:#22d3ee,color:#04060c
classDef caution fill:#fbbf24,color:#04060c
classDef risk fill:#fb7185,color:#04060c
class R,C,S,W,J live
class B caution
class N risk🧮 Inspector flow
flowchart LR
C[content-type] --> K{body kind?}
K --> J[json: parse + keys]
K --> F[form: fields]
K --> X[xml / text / empty]
J --> G[signature? size? sender?]
F --> G
X --> G
G --> V[replay seal chain]
V --> O[findings + seal ok?]
classDef engine fill:#a78bfa,color:#04060c
classDef live fill:#22d3ee,color:#04060c
classDef agent fill:#34d399,color:#04060c
class C,K live
class J,F,X,G engine
class V,O agent🤖 Agent (MCP) sequence
sequenceDiagram
participant A as Agent
participant M as /api/mcp
participant D as Neon
A->>M: tools/call create_bin
M->>D: INSERT bin
D-->>M: bin id
M-->>A: hook_path
A->>M: tools/call get_requests
M->>D: SELECT captures
M-->>A: requests JSON
A->>M: tools/call inspect_request
M-->>A: findings + sealValid🔗 Seal chain
flowchart TB
R["record: id method headers query body size"] --> J[canonicalJson sorted keys]
J --> H["SHA-384 prevSeal + json"]
H --> S[stored seal]
S --> V{inspector replay?}
V -->|match| OK[seal ok]
V -->|mismatch| BAD[seal BROKEN]
classDef engine fill:#a78bfa,color:#04060c
classDef agent fill:#34d399,color:#04060c
classDef risk fill:#fb7185,color:#04060c
class R,J,H engine
class S,V,OK agent
class BAD risk🚀 Deployment pipeline
flowchart LR
P[push to main] --> CI[Actions: lint + build]
CI --> V[vercel --prod]
V --> E[DATABASE_URL env]
E --> H["/api/health 200"]
H --> M[mutation proof: create bin + hook + read back]
M --> L[live alias verified]
classDef infra fill:#94a3b8,color:#04060c
classDef live fill:#22d3ee,color:#04060c
classDef agent fill:#34d399,color:#04060c
class P,CI,V,E infra
class H live
class M,L agent🧭 User-journey flow
flowchart TB
L[land: create bin or fire demo] --> B[open bin: copy endpoint]
B --> S[POST a webhook from anywhere]
S --> W[watch it stream in live]
W --> I[inspect + replay curl + export]
I --> A[agent does it all via MCP]
classDef live fill:#22d3ee,color:#04060c
classDef engine fill:#a78bfa,color:#04060c
classDef agent fill:#34d399,color:#04060c
class L,B,S,W live
class I engine
class A agent🚀 Quickstart
git clone https://github.com/aniruddhaadak80/hooklens.git
cd hooklens
npm installNeeds one env var — a Postgres URL (free at neon.tech, then run the 3 CREATE TABLE statements from src/lib schema via the Neon SQL editor):
# .env.local
DATABASE_URL=postgresql://user:pass@host/db?sslmode=require
npm run dev # open http://localhost:3000Prod: vercel env add DATABASE_URL production (and CI secret DATABASE_URL).
🔌 API
BASE=https://hooklens-brown.vercel.app
curl -X POST $BASE/api/bins -H 'content-type: application/json' -d '{"name":"stripe"}'
# → {"bin":{"id":"bin_k7q2m9xd", ...}} — grab the id
curl -X POST $BASE/api/hook/bin_k7q2m9xd -H 'content-type: application/json' -d '{"type":"order.paid"}'
curl $BASE/api/bins/bin_k7q2m9xd/requests?limit=5 # read back the capture ↑
curl $BASE/api/bins/bin_k7q2m9xd/requests/req_xyz # inspection + seal check
curl -O $BASE/api/bins/bin_k7q2m9xd/export # download JSON
curl -X POST $BASE/api/mcp -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_bin","arguments":{"name":"agent"}}}}'Agent setup (mcp.json block — full manifest in public/mcp.json):
{
"mcpServers": {
"hooklens": { "url": "https://hooklens-brown.vercel.app/api/mcp", "transport": "json-rpc" }
}
}📁 Project map
Path | What |
|
|
|
|
|
|
|
|
| Public catcher: any method → sealed capture |
| CRUD bins, requests, export |
| JSON-RPC: 5 tools incl. mutations |
| Neon access, deterministic inspector, hash chain |
🗺️ Roadmap
Now — catch + inspect + automate (wow outcome =
curlonce, watch it stream in, replay it)Next — saved replays & alerts (wow outcome = re-fire any capture on a schedule, get notified on match)
Later — request diffing (wow outcome = diff two captures side-by-side to spot breaking webhook changes)
flowchart LR
C[capture] --> F[filters + search]
F --> A[alerts on match]
classDef live fill:#22d3ee,color:#04060c
classDef engine fill:#a78bfa,color:#04060c
class A engine
class C,F liveflowchart TB
R[saved replay] --> S[schedule]
S --> N[notify on diff]
classDef agent fill:#34d399,color:#04060c
classDef engine fill:#a78bfa,color:#04060c
class R engine
class S,N agentflowchart LR
A[capture A] --> D[side-by-side diff]
B[capture B] --> D
classDef risk fill:#fb7185,color:#04060c
classDef live fill:#22d3ee,color:#04060c
class A,B live
class D risk🤝 Contributing
See CONTRIBUTING.md. MIT licensed — see LICENSE. Security notes in SECURITY.md.
⚠️ Debugging tool: bins are unlisted but unprotected — never POST real secrets, cards, or PII.
This server cannot be deployed
Maintenance
Related MCP Connectors
Webhook capture bins for agents: get a URL, wait for webhooks, set replies, verify signatures.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Instant no-signup webhook & HTTP-request inspector for testing webhooks and agent tool-callbacks.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables interaction with Webhook.site to create, manage, and monitor endpoints for capturing HTTP requests, emails, and DNS lookups. It provides 16 tools for testing webhooks and inspecting incoming data through the Model Context Protocol.2432 PyPI12MIT
- AlicenseAqualityDmaintenanceEnables AI agents to create disposable webhook URLs, capture incoming HTTP requests, inspect headers and bodies, and replay them against local or remote endpoints, streamlining the webhook handler development loop.59 npmMIT
- AlicenseAqualityDmaintenanceWebhook management and testing tools for AI agents. Provides tools for sending, validating, generating, and debugging webhooks.534 npmMIT
- AlicenseNot gradedqualityAmaintenanceA webhook management and delivery service with MCP tools for endpoints, deliveries, relay, and incoming webhooks, enabling autonomous agents to send, track, and relay webhooks.MIT