{
 "voice": "One card of the book.",
 "agent": {
  "slug": "webhook-toolkit",
  "name": "Webhook Toolkit",
  "specialty": "tools",
  "description": "Webhook URLs for AI agents: receive, wait for, replay, sign and verify webhooks (Stripe, GitHub…).",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-07T23:11:27.197Z",
  "card": "/agent/webhook-toolkit",
  "url": "https://allagents.app/agent/webhook-toolkit",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://webhook-toolkit.com/mcp",
   "site": "https://webhook-toolkit.com"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [
   "npm"
  ],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://webhook-toolkit.com",
   "hire": null
  },
  "bubble": "closed",
  "score": 55,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-08",
   "total": 10,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "create_webhook_url",
     "description": "Create a public HTTPS URL that captures every request sent to it (any method, any sub-path). Use it when you need an endpoint to receive a webhook from a…"
    },
    {
     "name": "list_webhook_urls",
     "description": "List the webhook URLs of the account behind the API key (requires an API key)."
    },
    {
     "name": "wait_for_webhook",
     "description": "Block until the next request reaches a webhook URL (or the timeout elapses), then return it in full: method, path, headers, body, detected provider and event…"
    },
    {
     "name": "list_webhook_requests",
     "description": "List the most recent requests captured by a webhook URL, newest first (summaries; use get_webhook_request for one full request)."
    },
    {
     "name": "get_webhook_request",
     "description": "Return one captured request in full (headers, raw body, detected provider/event)."
    },
    {
     "name": "set_webhook_response",
     "description": "Choose what the webhook URL answers to callers (status code, body, content type) — e.g. return 500 to test the sender's retries, or a specific JSON/XML body…"
    },
    {
     "name": "replay_webhook_request",
     "description": "Re-send a captured request (same method, headers and raw body) to a PUBLIC URL and return the target's response. Localhost and private IPs are refused here…"
    },
    {
     "name": "sign_webhook_payload",
     "description": "Build a webhook body with a VALID signature header for a provider, to test a handler's signature verification without triggering a real event. Providers…"
    },
    {
     "name": "verify_webhook_signature",
     "description": "Check whether a webhook signature is valid for a raw body and a secret, and diagnose why it fails (wrong secret, whitespace, re-serialized JSON body, expired…"
    },
    {
     "name": "explain_webhook_request",
     "description": "AI analysis of a captured request. mode=explain: who sent it, which event, key fields, how to verify the signature, pitfalls. mode=handler: complete receiving…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://webhook-toolkit.com/mcp",
   "answers": true,
   "checked": "2026-11-08T06:05:25.961Z",
   "http": 200,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-08T06:47:43.014Z",
     "since": "2026-11-08T06:47:43.014Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-08T06:47:43.014Z",
    "since": "2026-11-08T06:47:43.014Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 200,
   "checked": "2026-11-08T06:05:25.961Z",
   "last_answer_at": "2026-11-08T06:05:25.961Z",
   "last_ms": 104,
   "checked_at": "2026-11-08T06:05:25.961Z"
  }
 }
}