{
  "title": "Dataset constraint checker",
  "human_url": "https://happytails.ai/en/data-tools/dataset-constraint-checker/",
  "agent_url": "https://happytails.ai/agents/en/data-tools/dataset-constraint-checker/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/data-tools/dataset-constraint-checker.md",
  "content": "Dataset constraint checker\nCheck unique keys and numeric ranges across a collection of CSV exports.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Dataset constraint checker\nChoose up to 10 CSV files with distinct filenames.\nWrite unique or range rules using the exact uploaded filenames and headers.\nRun the checks and download the violations report.\nUseful next steps\nReferential integrity checker\nCSV schema validator\nPrepare the source\nChoose up to 10 CSV files with distinct filenames.\nChoose the matching rules\nWrite unique or range rules using the exact uploaded filenames and headers.\nReview and keep the result\nRun the checks and download the violations report. Unique rules span the union of the selected tables, including duplicate records in a single source. Range bounds are inclusive decimal strings. skipEmpty is optional and defaults to false. Reports omit source cell values.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Referential integrity checker",
      "url": "https://happytails.ai/en/data-tools/referential-integrity-checker/"
    },
    {
      "name": "CSV schema validator",
      "url": "https://happytails.ai/en/data-tools/csv-schema-validator/"
    }
  ],
  "tool": {
    "id": "dataset-constraint-checker",
    "category": "data-tools",
    "built": true,
    "requirements": "Unique rules span the union of the selected tables, including duplicate records in a single source. Range bounds are inclusive decimal strings. skipEmpty is optional and defaults to false. Reports omit source cell values. Up to 1,000,000 characters, 10,000 data records, 100 columns and 100,000 cells across the sources. Files for multi-source tools are limited to 4,000,000 bytes total. Reports retain at most 500 diagnostic findings and state any omitted count. CSV and JSON outputs are limited to 4,000,000 characters.",
    "implementation": {
      "fields": [
        {
          "key": "separator",
          "label": "Input CSV separator",
          "value": ",",
          "type": "select",
          "values": [
            ",",
            ";",
            "\t"
          ]
        },
        {
          "key": "rules",
          "label": "Table constraints (JSON)",
          "value": "[\n  {\n    \"type\": \"unique\",\n    \"tables\": [\n      \"first.csv\",\n      \"second.csv\"\n    ],\n    \"columns\": [\n      \"id\"\n    ]\n  },\n  {\n    \"type\": \"range\",\n    \"tables\": [\n      \"first.csv\",\n      \"second.csv\"\n    ],\n    \"column\": \"amount\",\n    \"min\": \"0\",\n    \"max\": \"10000\"\n  }\n]",
          "type": "textarea",
          "help": "Select tables by their exact uploaded filenames. unique accepts columns (an array); range accepts one column and min and/or max decimal strings. skipEmpty defaults to false."
        }
      ],
      "live": false,
      "presentation": "metrics",
      "note": "Runs locally on your device. CSV requires unique nonempty headers. Up to 1,000,000 characters, 10,000 data records and 100,000 cells across inputs, with 100 columns. Quoted multiline cells are supported. Each JSON settings field is limited to 100,000 characters. Output files are bounded to 4,000,000 characters. Diagnostic reports contain at most 500 findings and disclose the omitted count. Select 1 to 10 distinct UTF-8 CSV files. Up to 4,000,000 bytes total; aggregate CSV limits still apply. Each unique rule checks the union of its selected tables, including duplicates within a source. Range bounds are inclusive. Files are read sequentially and long checks yield so you can cancel.",
      "files": true,
      "multiple": true,
      "input": false,
      "accept": ".csv,.tsv,text/csv",
      "maxFileBytes": 4000000,
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Your text",
        "placeholder": "Type or paste your input…",
        "help": "Up to 1,000,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Dataset constraint checker\n\n- Human page: https://happytails.ai/en/data-tools/dataset-constraint-checker/\n- Markdown: https://happytails.ai/en/data-tools/dataset-constraint-checker.md\n- Structured JSON: https://happytails.ai/agents/en/data-tools/dataset-constraint-checker/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `dataset-constraint-checker` |\n| Category | data-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRuns locally on your device. CSV requires unique nonempty headers. Up to 1,000,000 characters, 10,000 data records and 100,000 cells across inputs, with 100 columns. Quoted multiline cells are supported. Each JSON settings field is limited to 100,000 characters. Output files are bounded to 4,000,000 characters. Diagnostic reports contain at most 500 findings and disclose the omitted count. Select 1 to 10 distinct UTF-8 CSV files. Up to 4,000,000 bytes total; aggregate CSV limits still apply. Each unique rule checks the union of its selected tables, including duplicates within a source. Range bounds are inclusive. Files are read sequentially and long checks yield so you can cancel.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\nAccepted browser files: `.csv,.tsv,text/csv`. Multiple files are supported.\n\nBrowser file-input limit: 4000000 bytes in total. HTTP limits can differ.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `separator` | Input CSV separator | select | \",\" | Allowed: ,, ;, \t |\n| `rules` | Table constraints (JSON) | textarea | \"[\\n  {\\n    \\\"type\\\": \\\"unique\\\",\\n    \\\"tables\\\": [\\n      \\\"first.csv\\\",\\n      \\\"second.csv\\\"\\n    ],\\n    \\\"columns\\\": [\\n      \\\"id\\\"\\n    ]\\n  },\\n  {\\n    \\\"type\\\": \\\"range\\\",\\n    \\\"tables\\\": [\\n      \\\"first.csv\\\",\\n      \\\"second.csv\\\"\\n    ],\\n    \\\"column\\\": \\\"amount\\\",\\n    \\\"min\\\": \\\"0\\\",\\n    \\\"max\\\": \\\"10000\\\"\\n  }\\n]\" |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUnique rules span the union of the selected tables, including duplicate records in a single source. Range bounds are inclusive decimal strings. skipEmpty is optional and defaults to false. Reports omit source cell values. Up to 1,000,000 characters, 10,000 data records, 100 columns and 100,000 cells across the sources. Files for multi-source tools are limited to 4,000,000 bytes total. Reports retain at most 500 diagnostic findings and state any omitted count. CSV and JSON outputs are limited to 4,000,000 characters.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"dataset-constraint-checker\",\n  \"category\": \"data-tools\",\n  \"built\": true,\n  \"requirements\": \"Unique rules span the union of the selected tables, including duplicate records in a single source. Range bounds are inclusive decimal strings. skipEmpty is optional and defaults to false. Reports omit source cell values. Up to 1,000,000 characters, 10,000 data records, 100 columns and 100,000 cells across the sources. Files for multi-source tools are limited to 4,000,000 bytes total. Reports retain at most 500 diagnostic findings and state any omitted count. CSV and JSON outputs are limited to 4,000,000 characters.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"separator\",\n        \"label\": \"Input CSV separator\",\n        \"value\": \",\",\n        \"type\": \"select\",\n        \"values\": [\n          \",\",\n          \";\",\n          \"\\t\"\n        ]\n      },\n      {\n        \"key\": \"rules\",\n        \"label\": \"Table constraints (JSON)\",\n        \"value\": \"[\\n  {\\n    \\\"type\\\": \\\"unique\\\",\\n    \\\"tables\\\": [\\n      \\\"first.csv\\\",\\n      \\\"second.csv\\\"\\n    ],\\n    \\\"columns\\\": [\\n      \\\"id\\\"\\n    ]\\n  },\\n  {\\n    \\\"type\\\": \\\"range\\\",\\n    \\\"tables\\\": [\\n      \\\"first.csv\\\",\\n      \\\"second.csv\\\"\\n    ],\\n    \\\"column\\\": \\\"amount\\\",\\n    \\\"min\\\": \\\"0\\\",\\n    \\\"max\\\": \\\"10000\\\"\\n  }\\n]\",\n        \"type\": \"textarea\",\n        \"help\": \"Select tables by their exact uploaded filenames. unique accepts columns (an array); range accepts one column and min and/or max decimal strings. skipEmpty defaults to false.\"\n      }\n    ],\n    \"live\": false,\n    \"presentation\": \"metrics\",\n    \"note\": \"Runs locally on your device. CSV requires unique nonempty headers. Up to 1,000,000 characters, 10,000 data records and 100,000 cells across inputs, with 100 columns. Quoted multiline cells are supported. Each JSON settings field is limited to 100,000 characters. Output files are bounded to 4,000,000 characters. Diagnostic reports contain at most 500 findings and disclose the omitted count. Select 1 to 10 distinct UTF-8 CSV files. Up to 4,000,000 bytes total; aggregate CSV limits still apply. Each unique rule checks the union of its selected tables, including duplicates within a source. Range bounds are inclusive. Files are read sequentially and long checks yield so you can cancel.\",\n    \"files\": true,\n    \"multiple\": true,\n    \"input\": false,\n    \"accept\": \".csv,.tsv,text/csv\",\n    \"maxFileBytes\": 4000000,\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Your text\",\n      \"placeholder\": \"Type or paste your input…\",\n      \"help\": \"Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCheck unique keys and numeric ranges across a collection of CSV exports.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Dataset constraint checker\n\n1. Choose up to 10 CSV files with distinct filenames.\n2. Write unique or range rules using the exact uploaded filenames and headers.\n3. Run the checks and download the violations report.\n\n## Useful next steps\n\n- [Referential integrity checker](https://happytails.ai/en/data-tools/referential-integrity-checker/) ([Markdown](https://happytails.ai/en/data-tools/referential-integrity-checker.md))\n\n- [CSV schema validator](https://happytails.ai/en/data-tools/csv-schema-validator/) ([Markdown](https://happytails.ai/en/data-tools/csv-schema-validator.md))\n\n## Prepare the source\n\nChoose up to 10 CSV files with distinct filenames.\n\n### Choose the matching rules\n\nWrite unique or range rules using the exact uploaded filenames and headers.\n\n### Review and keep the result\n\nRun the checks and download the violations report. Unique rules span the union of the selected tables, including duplicate records in a single source. Range bounds are inclusive decimal strings. skipEmpty is optional and defaults to false. Reports omit source cell values.\n"
}