{
  "id": "data.xlsx_to_json",
  "object": "tool",
  "name": "Excel to JSON",
  "summary": "Every sheet as JSON rows.",
  "description": "Reads an Excel workbook (.xlsx, .xlsm, .xls or .ods) and returns each sheet, or only the ones you name, as JSON rows keyed by the header row. Reports sheet names, row counts and columns. Dates become ISO strings. One JSON file per sheet, or one combined file.",
  "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_xlsx_to_json",
  "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 workbook"
      },
      "sheets": {
        "description": "Sheets to read. All sheets if omitted.",
        "maxItems": 100,
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 100
        }
      },
      "header": {
        "default": true,
        "description": "First row holds column names. Otherwise rows are arrays.",
        "type": "boolean"
      },
      "combined": {
        "default": false,
        "description": "One JSON file shaped { sheetName: rows } instead of one per sheet",
        "type": "boolean"
      }
    },
    "required": [
      "file"
    ]
  },
  "kind": "tool"
}