{
  "id": "inbox.create_webhook",
  "object": "tool",
  "name": "Create webhook inbox",
  "summary": "A public URL that catches webhooks.",
  "description": "Creates a public HTTPS URL that accepts any method and stores every request (method, headers, query, body, IP, time) for your agent to read with inbox.messages or inbox.wait. Optionally checks signatures: a generic HMAC-SHA256 header, Stripe or GitHub. Answers each request with a fixed status and body. Bodies up to 1 MB.",
  "category": "inbox",
  "hosted_by": "Opentools",
  "runtime": "worker",
  "side_effects": true,
  "status": "live",
  "credits": 1,
  "price": "$0.0010",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0010"
    }
  ],
  "mcp_name": "inbox_create_webhook",
  "input_schema": {
    "type": "object",
    "properties": {
      "label": {
        "description": "A label to recognise it by in lists",
        "type": "string",
        "maxLength": 120
      },
      "expires_in_hours": {
        "default": 168,
        "description": "Hours until it expires (max 720)",
        "type": "integer",
        "minimum": 1,
        "maximum": 720
      },
      "verification": {
        "default": "none",
        "description": "Reject requests whose signature doesn't check out",
        "type": "string",
        "enum": [
          "none",
          "hmac_sha256",
          "stripe",
          "github"
        ]
      },
      "signature_header": {
        "description": "hmac_sha256: header holding the signature (default x-signature)",
        "type": "string",
        "maxLength": 100
      },
      "secret": {
        "description": "Signing secret. Generated for hmac_sha256 and github if omitted; Stripe's whsec_… can be set later with inbox.update",
        "type": "string",
        "minLength": 8,
        "maxLength": 256
      },
      "response_status": {
        "default": 200,
        "description": "Status code to answer with",
        "type": "integer",
        "minimum": 200,
        "maximum": 599
      },
      "response_body": {
        "description": "Body to answer with (default {\"ok\":true})",
        "type": "string",
        "maxLength": 10000
      },
      "response_content_type": {
        "description": "Content-Type of the response body",
        "type": "string",
        "maxLength": 100
      }
    }
  },
  "kind": "tool"
}