{"name":"CSV Validator","slug":"csv-validator","url":"https://csv-validator.mekler.ai","stage":"beta","research_ids":["M50-001","M50-002"],"endpoints":[{"method":"POST","path":"/v1/accept/csv","description":"Validate CSV before import using a fixed JSON column specification. Checks missing/extra columns, required cells, string/integer/decimal/boolean/date types, uniqueness, allowed values and numeric/row-count bounds. Returns pass/fail with row/column error codes. POST JSON with csv and spec.columns; schemas/examples attached. Full contract: /openapi.json. Max 2,000 rows, 50 columns, 256 KiB; first 50 failures. No formulas, cross-column rules, fact checking or data repair."},{"method":"POST","path":"/v1/accept/compile","description":"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/accept/csv. 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."}],"pricing":{"status":"paid_pilot","billing_enabled":true,"amount":"0.05","currency":"USDC","network":"Solana mainnet","payment_protocol":"x402 v2 exact","per":"accepted request","free_tier":false,"retry":"Retry identical request body and PAYMENT-SIGNATURE after an uncertain result; do not sign or pay again."},"limits":{"request_bytes":262144,"rows":2000,"columns":50,"reported_failures":50,"response_bytes":16384,"per_route_requests_per_second":0.2,"pilot_purchases":1000},"thresholds":["Technical release and real rollback pass","Independent repeat use and willingness to pay remain unvalidated"],"skill":"SKILL.md","venture_doc":"docs/venture.md","privacy":"No input persistence, cell values in error reports, external fetches or model calls. AWS request metadata and runtime logs retained seven days; payload logging disabled.","boundary":"Checks explicit supported criteria only. No truth, fitness, escrow or payment certification.","former_names":["Acceptance"],"description":"Mekler checks CSV files against a fixed JSON column specification before import or handoff. It detects missing fields, duplicate values, invalid types/dates, disallowed values and numeric/row-count violations, returning row/column error codes. A separate endpoint checks the specification itself. No custom formulas, cross-column logic, factual verification or data repair. 0.05 native USDC per accepted request via x402 on Solana; no input retention.","use_when":["Check extracted or cleaned CSV before import, delivery acceptance or the next agent step.","Validate a typed CSV specification before giving it to a worker."],"not_for":["Fact checking or subjective quality judgments","Natural-language rule interpretation","Fetching or cleaning remote files"],"agent_guide":{"purpose":"Check CSV schema and column constraints before import or delivery acceptance.","choose_when":["You already have CSV text and can express your requirements using the fixed column specification.","You need deterministic row/column failures to request corrections or reject a delivery."],"capabilities":["Every specified column must exist. Extra columns are rejected unless allow_extra_columns is true.","Per-column checks: type, required nonempty cells, uniqueness, exact allowed strings (enum), inclusive numeric min/max.","Types: string, integer, decimal, boolean, date. No whitespace trimming. Empty optional cells skip other checks.","Per-file checks: min_rows and max_rows; each data record must have the same field count as the header.","The compile endpoint validates the same fixed JSON specification; it returns that spec unchanged. It does not generate rules."],"not_supported":["Custom expressions or executable predicates","Cross-column arithmetic or conditional rules","Cross-file joins or referential integrity","Natural-language requirements","Truth verification, data repair or URL retrieval"],"calling":{"content_type":"application/json","csv":"POST /v1/accept/csv with {csv: string, spec: object}.","compile":"POST /v1/accept/compile with {requirements: object}, using the identical column-spec grammar.","spec":"columns is required; each entry requires name and type. Other supported fields are required, unique, enum, min, max. File options are min_rows, max_rows, allow_extra_columns. Unknown properties are rejected."},"constraints":{"request_bytes":262144,"data_records":2000,"columns":50,"reported_failures":50,"result_bytes":16384,"semantics":["Numeric uniqueness compares values numerically. Other uniqueness uses literal strings. Empty optional cells are skipped.","enum compares the original nonempty cell string, even for numeric columns.","Row numbers are one-based data records excluding the header. Quoted newlines remain part of one record.","Malformed CSV, invalid/duplicate headers or unsupported specs return 400, not a fail verdict."]},"result_interpretation":{"verdict":"pass means all evaluated built-in constraints passed; fail means at least one violation. Neither establishes factual accuracy.","failures":"First 50 violations as code, row and column. Null locations denote a file/header-level issue. Cell values are not returned.","failure_count":"Total counted violations, which can exceed failures length. Check failures_truncated.","receipt_sha256":"Hash of the canonical request, not a signature or proof of truth. Payment receipt is a separate header.","compiler":"schema_version, validated spec, unsupported=[], boundary. Unsupported settings instead return HTTP 400."},"selection_examples":[{"task":"Reject duplicate IDs and negative prices in extracted CSV.","endpoint":"/v1/accept/csv","fit":true},{"task":"Check the JSON spec before assigning extraction.","endpoint":"/v1/accept/compile","fit":true},{"task":"Verify invoice total equals quantity times unit price.","fit":false,"reason":"Cross-column expressions are unsupported."}],"payment":{"price":"0.05 native USDC per accepted request","network":"Solana mainnet","protocol":"x402 v2 exact","quote":"Send the valid intended JSON body without PAYMENT-SIGNATURE. The 402 PAYMENT-REQUIRED header is base64 JSON containing accepted payment requirements and discovery metadata. It is not a service result. A bodyless or empty-object unsigned POST returns a nonpayable preflight 402 for discovery; submit the intended valid JSON to obtain a payable quote. Never sign the preflight offer.","authorization":"Use an authorized buyer wallet and check network, asset, recipient and amount before signing. Send PAYMENT-SIGNATURE with identical JSON input. No API key or subscription is required.","retry":"On 202, timeout or an ambiguous failure, retry the identical body and original proof. Do not sign or pay again. Retry-After is 5 seconds for 202.","finality":"200 with X-Mekler-Payment-State=finalized includes a base64 JSON PAYMENT-RESPONSE receipt. After 15 minutes of uncertainty, a provisional 200 may have X-Mekler-Purchase-Id but no payment receipt. Provisional does not establish settlement.","expiry":"2026-10-27T14:19:19Z unless separately renewed; expired allowance or exhausted 1000-purchase shared pilot cap returns 503."},"privacy":"Inputs/results are processed in memory and not retained or logged. Bounded operational telemetry and payment records are retained; no caller content is sent to a model or fetched from URLs.","documentation":{"openapi":"/openapi.json","manifest":"/service.json","examples":"Each operation includes executable request and 200-response examples."}},"directory_name":"Mekler: CSV Validator"}