{
  "slug": "byte-take",
  "name": "gizza-ai/byte-take",
  "version": "0.1.0",
  "title": "Byte Take — Extract a Byte Range from Text, Hex or Base64 — gizza.ai",
  "description": "Extract a byte range from text, hex, or Base64 by start offset and length, output as text, hex, or Base64 — free byte slice tool, runs in your browser.",
  "tags": [
    "byte take",
    "extract bytes",
    "byte slice",
    "byte range",
    "byte substring",
    "hex",
    "base64",
    "slice bytes",
    "binary slice",
    "offset length"
  ],
  "category": "encoding",
  "urls": {
    "page": "https://gizza.ai/tools/byte-take/",
    "markdown": "https://gizza.ai/tools/byte-take/index.md",
    "descriptor": "https://gizza.ai/tools/byte-take/tool.json",
    "deep_link_example": "https://gizza.ai/tools/byte-take/?input=Hello%2C%20World&start=7&length=5&format=text&output=text"
  },
  "cli": "gizza tool byte-take \"Hello, World\"",
  "tool": {
    "description": "Extract a contiguous range of bytes from data and return that slice. Decodes 'input' per format ('text' UTF-8, 'hex' byte string, or 'base64'), then keeps 'length' bytes starting at byte offset 'start' (0-based, inclusive). start may be negative to count from the end (-1 is the last byte); start and length are clamped to the buffer, and length=0 extracts nothing. The extracted bytes are rendered per 'output' ('text', 'hex', or 'base64'). Offsets and lengths are raw bytes, not characters. Runs locally.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "format": {
          "default": "text",
          "description": "How to interpret 'input'. 'text' (default) is UTF-8; 'hex' is a hex byte string (e.g. '48 65 6c' or '0x48656c'); 'base64' is standard Base64. Offsets and lengths are counted in raw bytes, not characters.",
          "enum": [
            "text",
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "input": {
          "description": "The data to extract bytes from — UTF-8 text, a hex byte string, or Base64 (set by 'format').",
          "type": "string"
        },
        "length": {
          "default": 0,
          "description": "How many bytes to extract starting at 'start'. 0 extracts nothing; a range past the end is clamped. Must be zero or positive. Default 0.",
          "type": "integer"
        },
        "output": {
          "default": "text",
          "description": "How to render the extracted bytes. 'text' (default) is UTF-8 (errors if the slice isn't valid UTF-8); 'hex' and 'base64' show the raw bytes — use them for binary data.",
          "enum": [
            "text",
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "start": {
          "default": 0,
          "description": "0-based byte offset of the first byte to extract (inclusive). Negative counts from the end (-1 is the last byte). Clamped to the buffer. Default 0.",
          "type": "integer"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}