{
  "slug": "parse-grpc-frame",
  "name": "gizza-ai/parse-grpc-frame",
  "version": "0.1.0",
  "title": "gRPC Frame Parser — Decode gRPC Length-Prefixed Messages — gizza.ai",
  "description": "Parse gRPC length-prefixed frames from base64 or hex and decode each protobuf payload into a readable field tree. No .proto needed — free, in your browser.",
  "tags": [
    "grpc",
    "grpc frame",
    "length-prefixed message",
    "protobuf",
    "decode grpc",
    "grpc wire format",
    "reverse engineering",
    "http2"
  ],
  "category": "network",
  "urls": {
    "page": "https://gizza.ai/tools/parse-grpc-frame/",
    "markdown": "https://gizza.ai/tools/parse-grpc-frame/index.md",
    "descriptor": "https://gizza.ai/tools/parse-grpc-frame/tool.json",
    "deep_link_example": "https://gizza.ai/tools/parse-grpc-frame/?input=00%2000%2000%2000%2003%2008%2096%2001&encoding=auto&format=json"
  },
  "cli": "gizza tool parse-grpc-frame \"00 00 00 00 03 08 96 01\"",
  "tool": {
    "description": "Parse a gRPC length-prefixed message stream and decode each embedded protobuf payload into a field tree — no .proto schema needed. gRPC wraps every message as a 1-byte compressed flag (0=uncompressed, 1=compressed) + a 4-byte big-endian length + that many payload bytes, and several messages can be concatenated. Give the bytes as base64 or hex in 'input' (encoding='auto' (default), 'base64', or 'hex'). For each frame the output reports its index, compressed flag, declared length, and — for uncompressed frames — the protobuf payload decoded by field number / wire type. Use format='json' (default) for a structured tree or 'text' for a compact outline.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "encoding": {
          "default": "auto",
          "description": "How the input bytes are encoded.",
          "enum": [
            "auto",
            "base64",
            "hex"
          ],
          "type": "string"
        },
        "format": {
          "default": "json",
          "description": "Output shape: 'json' tree or 'text' outline.",
          "enum": [
            "json",
            "text"
          ],
          "type": "string"
        },
        "input": {
          "description": "The gRPC length-prefixed message stream, as a base64 or hex string.",
          "type": "string"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}