# Mekler AI CSV Column Spec Validator

> Mekler AI CSV Column Spec Validator is a paid API for AI agents from api.mekler.ai, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-10).

Validates a JSON column specification (types, constraints, row bounds) before using it with the CSV data validation endpoint

## Facts

- Endpoint: POST https://api.mekler.ai/v1/data/csv/validate-column-spec?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/mekler-ai-csv-column-spec-validator-0ae05238
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_5_sPEA2vkCo6Jmkt48yAc

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability mekler-ai-csv-column-spec-validator-0ae05238 -d '<json body>'
```

Example prompt: Before I run CSV data validation, can you check whether this column spec is valid: columns named 'id' (string, required, unique) and 'amount' (decimal, required, min 0, max 100), at least 1 row, no extra columns allowed?

## When to prefer this

Use this endpoint when you need to verify a column specification before submitting it to the /v1/data/csv/validate-data endpoint, or any time you want to catch schema configuration errors early in an automated pipeline. Prefer this over directly submitting to the data validator when you want to confirm that column types, constraints, and row bounds are correctly structured without incurring the cost or complexity of running against real CSV data.

## Known failure modes

- Unknown or unsupported column field names cause rejection with indication of which fields are invalid
- Unsupported column types (anything other than string, integer, decimal, boolean, date) are rejected
- min/max bounds specified on non-numeric columns (e.g. string or boolean) are rejected
- enum lists exceeding 100 items or with items over 1000 characters are rejected
- More than 50 columns in a single spec triggers rejection
- max_rows or min_rows outside 0-2000 range causes rejection
- Missing required 'columns' array or missing 'name'/'type' on individual columns causes rejection
- Natural language or prose-based rule descriptions are not supported and will be rejected

## How this service works

Validate a fixed JSON CSV column specification before assigning extraction or checking deliveries. Send typed column settings in requirements; returns the validated spec for /v1/data/csv/validate-data. Rejects unknown fields and unsupported settings. This checks the specification itself, not CSV data. No custom expressions, cross-column rules or prose-to-rule conversion. Schemas/examples attached; full contract: /openapi.json.

## Output

Returns the validated column specification including the columns array with all field definitions, schema_version, a boundary statement clarifying typed-only constraints, and an unsupported list of any unrecognized fields that were rejected.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "requirements": {
   "type": "object",
   "required": [
    "columns"
   ],
   "properties": {
    "columns": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "name",
       "type"
      ],
      "properties": {
       "max": {
        "oneOf": [
         {
          "type": "number"
         },
         {
          "type": "string"
         }
        ],
        "description": "Inclusive numeric bound; allowed only for integer or decimal columns."
       },
       "min": {
        "oneOf": [
         {
          "type": "number"
         },
         {
          "type": "string"
         }
        ],
        "description": "Inclusive numeric bound; allowed only for integer or decimal columns."
       },
       "enum": {
        "type": "array",
        "items": {
         "type": "string",
         "maxLength": 1000
        },
        "maxItems": 100,
        "minItems": 1,
        "description": "Exact allowed cell strings, compared without trimming or normalization."
       },
       "name": {
        "type": "string",
        "maxLength": 100,
        "minLength": 1
       },
       "type": {
        "enum": [
         "string",
         "integer",
         "decimal",
         "boolean",
         "date"
        ],
        "type": "string",
        "description": "string: literal text; integer: base-10, no plus sign or leading zeros; decimal: plain decimal, no exponent; boolean: lowercase true/false; date: valid YYYY-MM-DD."
       },
       "unique": {
        "type": "boolean",
        "default": false,
        "description": "Reject repeated nonempty values within this column; numeric values compare numerically."
       },
       "required": {
        "type": "boolean",
        "default": false,
        "description": "Reject empty cells. Whitespace is not trimmed."
       }
      },
      "additionalProperties": false
     },
     "maxItems": 50,
     "minItems": 1,
     "description": "Fixed built-in checks. Every named column must exist, even when required is false."
    },
    "max_rows": {
     "type": "integer",
     "default": 2000,
     "maximum": 2000,
     "minimum": 0
    },
    "min_rows": {
     "type": "integer",
     "default": 0,
     "maximum": 2000,
     "minimum": 0
    },
    "allow_extra_columns": {
     "type": "boolean",
     "default": false,
     "description": "If false, reject CSV headers not named in columns."
    }
   },
   "additionalProperti
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "spec": {
   "columns": [
    {
     "name": "id",
     "type": "string",
     "unique": true,
     "required": true
    },
    {
     "max": "100",
     "min": "0",
     "name": "amount",
     "type": "decimal",
     "required": true
    }
   ],
   "min_rows": 1
  },
  "boundary": "Typed requirements only; no natural-language interpretation.",
  "unsupported": [],
  "schema_version": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/mekler-ai-csv-column-spec-validator-0ae05238/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.mekler.ai](https://www.zero.xyz/host/api.mekler.ai/llms.txt)
