{
  "slug": "enum-domain-check",
  "name": "gizza-ai/enum-domain-check",
  "version": "0.1.0",
  "title": "Enum Domain Check — Flag CSV Values Outside an Allowed Set — gizza.ai",
  "description": "Check one CSV column against allowed categories and flag out-of-set values with counts, row locations, blank handling, and text or JSON reports.",
  "tags": [
    "csv validation",
    "allowed values",
    "domain check",
    "controlled vocabulary",
    "categorical validation",
    "data quality",
    "enum check"
  ],
  "category": "utilities",
  "urls": {
    "page": "https://gizza.ai/tools/enum-domain-check/",
    "markdown": "https://gizza.ai/tools/enum-domain-check/index.md",
    "descriptor": "https://gizza.ai/tools/enum-domain-check/tool.json",
    "deep_link_example": "https://gizza.ai/tools/enum-domain-check/?data=name%2Cstatus%0AAda%2Cactive%0ABo%2Cactiv%0ACy%2Cpending%0ADe%2Cactive&column=status&allowed=active%2Cinactive%2Cpending&ignore_case=true&trim=true&has_header=true&allow_blank=true&delimiter=auto&max_issues=50&output=text"
  },
  "cli": "gizza tool enum-domain-check \"name,status\nAda,active\nBo,activ\nCy,pending\nDe,active\" 'column=status' 'allowed=active,inactive,pending'",
  "tool": {
    "description": "Check one CSV column against an allowed set of category values (a domain / controlled-vocabulary / allowed-values check). Flags every cell whose value is not one of the allowed categories, and summarizes the distinct unexpected values with counts so typos are easy to spot. Supports header or index column selection, delimiter auto-detection, case-insensitive matching, whitespace trimming, blank-cell policy, capped issue lists, and text or JSON reports.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "allow_blank": {
          "default": true,
          "description": "Treat blank cells as valid without checking membership. Turn off to flag blank cells.",
          "type": "boolean"
        },
        "allowed": {
          "description": "The allowed set of category values, comma-separated (e.g. active,inactive,pending). Surrounding spaces are trimmed and duplicates ignored.",
          "type": "string"
        },
        "column": {
          "description": "Target column header name, or a 0-based column index. Numeric values are always treated as indexes.",
          "type": "string"
        },
        "data": {
          "description": "CSV text to validate.",
          "type": "string"
        },
        "delimiter": {
          "default": "auto",
          "description": "CSV delimiter. Auto detects comma, tab, semicolon, or pipe from the first non-blank line.",
          "enum": [
            "auto",
            "comma",
            "tab",
            "semicolon",
            "pipe"
          ],
          "type": "string"
        },
        "has_header": {
          "default": true,
          "description": "Treat the first CSV row as headers. Turn off to use 0-based numeric column indexes.",
          "type": "boolean"
        },
        "ignore_case": {
          "default": false,
          "description": "Compare values case-insensitively when checking membership.",
          "type": "boolean"
        },
        "max_issues": {
          "default": 50,
          "description": "Maximum number of offending rows (and distinct unexpected values) to list; total invalid count is still reported.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "output": {
          "default": "text",
          "description": "Output format: readable text report or structured JSON.",
          "enum": [
            "text",
            "json"
          ],
          "type": "string"
        },
        "trim": {
          "default": true,
          "description": "Trim surrounding whitespace from each cell before comparing. Turn off to require an exact, unpadded match.",
          "type": "boolean"
        }
      },
      "required": [
        "data",
        "column",
        "allowed"
      ],
      "type": "object"
    }
  }
}