{
  "slug": "http-request-builder",
  "name": "gizza-ai/http-request-builder",
  "version": "0.1.0",
  "title": "HTTP Request Builder — raw HTTP/1.1 message — gizza.ai",
  "description": "Build a well-formed raw HTTP/1.1 request from a method, URL, headers, and body — in your browser. Nothing is sent. Great for netcat, teaching, and debugging.",
  "tags": [
    "http request builder",
    "raw http",
    "http/1.1",
    "request message",
    "netcat",
    "build http request"
  ],
  "category": "network",
  "urls": {
    "page": "https://gizza.ai/tools/http-request-builder/",
    "markdown": "https://gizza.ai/tools/http-request-builder/index.md",
    "descriptor": "https://gizza.ai/tools/http-request-builder/tool.json",
    "deep_link_example": "https://gizza.ai/tools/http-request-builder/?url=https%3A%2F%2Fapi.example.com%2Fv1%2Fitems%3Flimit%3D10&method=GET&headers=Accept%3A%20application%2Fjson%0AAuthorization%3A%20Bearer%20TOKEN&body=%7B%22name%22%3A%20%22widget%22%7D"
  },
  "cli": "gizza tool http-request-builder \"https://api.example.com/v1/items?limit=10\"",
  "tool": {
    "description": "Build a well-formed raw HTTP/1.1 request message from a method, URL, headers, and body. NOTHING is sent — it just produces the text you'd put on the wire (e.g. for netcat/openssl s_client, teaching, or debugging). The request-target and Host come from the URL; headers are one 'Name: Value' per line; a Content-Length is added for a body. Lines are CRLF-terminated. To actually send a request, use the http-request tool.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "description": "Optional request body. A Content-Length header is added automatically when a body is given.",
          "type": "string"
        },
        "headers": {
          "description": "Optional request headers, one 'Name: Value' per line. Host is added from the URL if omitted.",
          "type": "string"
        },
        "method": {
          "default": "GET",
          "description": "HTTP method (default GET).",
          "enum": [
            "GET",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "HEAD",
            "OPTIONS"
          ],
          "type": "string"
        },
        "url": {
          "description": "The request URL (used for the request-target and Host header).",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    }
  }
}