{
  "id": "data.split",
  "object": "tool",
  "name": "Split spreadsheet",
  "summary": "One CSV or Excel file into many.",
  "description": "Splits a CSV, TSV or Excel (.xlsx) file into parts: every N rows, into N equal parts, or one file per distinct value of a column (up to 500 files; values are made filename-safe). Every part keeps the header row. For Excel, pick the sheet to split. Parts come back in the same format, or as CSV, with an index of file names, row counts and values.",
  "category": "data",
  "hosted_by": "Opentools",
  "runtime": "worker",
  "side_effects": false,
  "status": "live",
  "credits": 1,
  "price": "$0.0010",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0010"
    }
  ],
  "mcp_name": "data_split",
  "input_schema": {
    "type": "object",
    "properties": {
      "file": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public http(s) URL of the file"
              }
            },
            "required": [
              "url"
            ]
          },
          {
            "type": "object",
            "properties": {
              "file_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "An id returned by POST /v1/files"
              }
            },
            "required": [
              "file_id"
            ]
          },
          {
            "type": "object",
            "properties": {
              "base64": {
                "type": "string",
                "description": "Base64-encoded file bytes (up to 10 MB)"
              },
              "name": {
                "type": "string",
                "description": "File name, e.g. invoice.pdf"
              },
              "content_type": {
                "type": "string"
              }
            },
            "required": [
              "base64",
              "name"
            ]
          },
          {
            "type": "object",
            "properties": {
              "connection": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "A storage connection id or name (see storage.connections)"
              },
              "path": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Path of the file in that connection, e.g. reports/q3.pdf"
              }
            },
            "required": [
              "connection",
              "path"
            ]
          }
        ],
        "x-file": true,
        "description": "The CSV, TSV or .xlsx file"
      },
      "rows_per_file": {
        "description": "Rows per part (not counting the header)",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000000
      },
      "parts": {
        "description": "Split into this many parts of near-equal size",
        "type": "integer",
        "minimum": 2,
        "maximum": 500
      },
      "column": {
        "description": "Make one file per distinct value of this column (header name, or a 1-based number)",
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "header": {
        "default": true,
        "description": "The first row holds column names and is repeated in every part",
        "type": "boolean"
      },
      "sheet": {
        "description": "Excel: sheet to split. The first sheet if omitted.",
        "type": "string",
        "maxLength": 100
      },
      "to": {
        "default": "same",
        "description": "Output format: the same as the input, or CSV",
        "type": "string",
        "enum": [
          "same",
          "csv"
        ]
      }
    },
    "required": [
      "file"
    ]
  },
  "kind": "tool"
}