AVAILABLE

Developer Tools

CSV Normalize & Validate

Parse, normalize, validate, and profile CSV, TSV, semicolon, or pipe-delimited text with deterministic issues and spreadsheet-formula safeguards.

CONTRACT

Predictable for agents. Legible for reviewers.

REST
POST /v1/csv/normalize
MCP tool
normalize_csv
Inputs
Up to 512 KiB of UTF-8 delimited text in a JSON request, with explicit delimiter, header, validation, sampling, and formula policies depending on the operation.
Returns
A typed result with detected dialect, row and column counts, hashes, bounded issues, validation evidence, or normalized CSV plus an agent-readable next action.
Latency
Synchronous
Usage unit
CSV operation

The focused suite also exposes /v1/csv/parse, /v1/csv/validate, and /v1/csv/profile plus the separate /mcp/csv server. It never fetches files, stores payloads, opens a spreadsheet, executes formulas, or infers business meaning. Requests are limited to 10,000 rows, 256 columns, 250,000 cells, and a 2 MiB structured result.

AGENT-READABLE EXCEPTIONS

CSV_DELIMITER_UNDETERMINEDCSV_HEADER_DUPLICATECSV_RAGGED_ROWCSV_SPREADSHEET_FORMULA_CANDIDATECSV_TYPE_INVALIDCSV_SCHEMA_PATTERN_TIMEOUTCSV_OUTPUT_TOO_LARGE
HTTP request
POST /v1/csv/normalize
Authorization: Bearer apc_...
Content-Type: application/json

{
  "text": "Customer Name;Amount;Reference\r\nAda;125.50;=A1\r\n",
  "delimiter": "SEMICOLON",
  "header_mode": "PRESENT",
  "output_delimiter": "COMMA",
  "header_style": "SNAKE_CASE",
  "formula_policy": "ESCAPE"
}
cURL (bash)
curl --request POST \
  --url 'https://api-production-9502.up.railway.app/v1/csv/normalize' \
  --header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
  --header 'Content-Type: application/json' \
  --data '{
  "text": "Customer Name;Amount;Reference\r\nAda;125.50;=A1\r\n",
  "delimiter": "SEMICOLON",
  "header_mode": "PRESENT",
  "output_delimiter": "COMMA",
  "header_style": "SNAKE_CASE",
  "formula_policy": "ESCAPE"
}'
Representative response
{
  "status": "COMPLETED",
  "decision": "CLEAR",
  "dialect": {
    "delimiter": "COMMA",
    "delimiter_character": ",",
    "header_mode": "PRESENT",
    "newline_style": "LF",
    "had_utf8_bom": false
  },
  "headers": [
    "customer_name",
    "amount",
    "reference"
  ],
  "normalized_csv": "customer_name,amount,reference\nAda,125.50,'=A1\n",
  "row_count": 1,
  "column_count": 3,
  "source_sha256": "70e1...",
  "normalized_sha256": "09cb...",
  "issue_count": 3,
  "issues_returned": 3,
  "issues_truncated": false,
  "issues": [
    {
      "code": "CSV_HEADER_NORMALIZED",
      "severity": "INFO",
      "column": "Customer Name"
    },
    {
      "code": "CSV_HEADER_NORMALIZED",
      "severity": "INFO",
      "column": "Reference"
    },
    {
      "code": "CSV_SPREADSHEET_FORMULA_ESCAPED",
      "severity": "LOW",
      "row_number": 1,
      "column": "reference"
    }
  ],
  "warnings": [],
  "next_action": "Use the normalized CSV and returned header names."
}
Formula-awareFormula-like cells are flagged, escaped, or explicitly allowed; they are never executed.
Stateless and boundedPayloads are not stored, and byte, row, column, cell, pattern, issue, and output limits are enforced.
No fetching or guessingThe API accepts supplied text only and does not fetch files, infer business meaning, or claim semantic type verification.

Use CSV Normalize & Validate through RapidAPI.

Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.