Servidor MCP

Import Check: Validate & Clean CSV

io.github.LeBorgneAntoine/import-check
Datos y analítica Público y accesible MCP 2025-11-25

Qué hace este MCP

Validates CSV files against explicit schemas and applies requested column cleanup and transformations.

clean_csv
Clean selected CSV columns and validate the result
Apply only requested column renames and transformations, then validate the output against schema. Cleanup column names refer to the original headers; schema names refer to the renamed output. Transformations run in listed order. decimal_comma changes only plain numbers such as 12,50; ambiguous grouping stays unchanged. No records or columns are removed. Returned csv_text is UTF-8-compatible with CRLF record endings. One paid operation includes cleanup and validation. Spreadsheet-safe escaping is opt-in and may make numeric negative cells fail numeric validation; inspect the final report before import.
Esquema de entrada
{'type': 'object', '$defs': {'Change': {'type': 'object', 'title': 'Change', 'required': ['column', 'action'], 'properties': {'action': {'enum': ['trim', 'lowercase', 'uppercase', 'decimal_comma'], 'type': 'string', 'title': 'Action'}, 'column': {'type': 'string', 'title': 'Column', 'maxLength': 100, 'minLength': 1, 'description': 'Original header before any renaming.'}}, 'additionalProperties': False}, 'Column': {'type': 'object', 'title': 'Column', 'required': ['name'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 100, 'minLength': 1, 'description': 'Exact, case-sensitive header after any cleanup rename.'}, 'type': {'enum': ['string', 'integer', 'decimal', 'boolean', 'date', 'email'], 'type': 'string', 'title': 'Type', 'default': 'string'}, 'unique': {'type': 'boolean', 'title': 'Unique', 'default': False, 'description': 'Require non-empty raw strings to be unique within this column.'}, 'choices': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100}, {'type': 'null'}], 'title': 'Choices', 'default': None, 'description': 'Optional exact allowed strings, checked before type conversion.'}, 'maximum': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Maximum', 'default': None, 'description': 'Inclusive numeric bound, as a decimal string. Numeric columns only.'}, 'minimum': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Minimum', 'default': None, 'description': 'Inclusive numeric bound, as a decimal string. Numeric columns only.'}, 'required': {'type': 'boolean', 'title': 'Required', 'default': True, 'description': 'Reject an empty value. Every declared header must exist regardless.'}, 'max_length': {'type': 'integer', 'title': 'Max Length', 'default': 10000, 'maximum': 10000, 'minimum': 1}}, 'additionalProperties': False}, 'Cleanup': {'type': 'object', 'title': 'Cleanup', 'properties': {'rename': {'type': 'object', 'title': 'Rename', 'description': 'Original header to new header; simultaneous rename, no dropping columns.', 'additionalProperties': {'type': 'string'}}, 'changes': {'type': 'array', 'items': {'$ref': '#/$defs/Change'}, 'title': 'Changes', 'maxItems': 100, 'description': 'Applied in order to explicitly named original columns only.'}, 'spreadsheet_safe': {'type': 'boolean', 'title': 'Spreadsheet Safe', 'default': False, 'description': 'Prefix cells starting with spreadsheet formula markers with an apostrophe. Output is then revalidated; numeric negatives may fail numeric types.'}}, 'additionalProperties': False}, 'CsvSchema': {'type': 'object', 'title': 'CsvSchema', 'required': ['columns'], 'properties': {'columns': {'type': 'array', 'items': {'$ref': '#/$defs/Column'}, 'title': 'Columns', 'maxItems': 100, 'minItems': 1}, 'allow_extra_columns': {'type': 'boolean', 'title': 'Allow Extra Columns', 'default': False}}, 'additionalProperties': False}}, 'title': 'clean_csvArguments', 'required': ['csv_text', 'schema', 'cleanup'], 'properties': {'schema': {'$ref': '#/$defs/CsvSchema'}, 'cleanup': {'$ref': '#/$defs/Cleanup'}, 'csv_text': {'type': 'string', 'title': 'Csv Text'}, 'delimiter': {'enum': [',', ';', '\t', '|'], 'type': 'string', 'title': 'Delimiter', 'default': ','}, 'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Request Id', 'default': None}}}
get_csv_example
Get a complete CSV and schema example
Return a fixed synthetic CSV and its column schema. Free, no key or quota. Copy the structure, then supply your own CSV to validate_csv.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_csv_exampleArguments', 'properties': {}}
get_csv_usage
Check remaining CSV operations
Read remaining operations and expiry for the API key supplied in the Authorization header. Does not consume credit.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_csv_usageArguments', 'properties': {}}
validate_csv
Validate a CSV before importing it
Check a CSV against your explicit schema; return all issue counts and at most 200 detailed findings. Headers match exactly; required=false permits empty cells, not missing headers. Unique compares raw non-empty strings. Dates use YYYY-MM-DD, decimals use a dot without grouping, booleans use true/false. A valid=false report is a completed paid operation, not a tool failure. No values are changed; use clean_csv for explicit transformations. Validity covers only the supplied rules, not destination-system or business correctness.
Esquema de entrada
{'type': 'object', '$defs': {'Column': {'type': 'object', 'title': 'Column', 'required': ['name'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 100, 'minLength': 1, 'description': 'Exact, case-sensitive header after any cleanup rename.'}, 'type': {'enum': ['string', 'integer', 'decimal', 'boolean', 'date', 'email'], 'type': 'string', 'title': 'Type', 'default': 'string'}, 'unique': {'type': 'boolean', 'title': 'Unique', 'default': False, 'description': 'Require non-empty raw strings to be unique within this column.'}, 'choices': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100}, {'type': 'null'}], 'title': 'Choices', 'default': None, 'description': 'Optional exact allowed strings, checked before type conversion.'}, 'maximum': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Maximum', 'default': None, 'description': 'Inclusive numeric bound, as a decimal string. Numeric columns only.'}, 'minimum': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Minimum', 'default': None, 'description': 'Inclusive numeric bound, as a decimal string. Numeric columns only.'}, 'required': {'type': 'boolean', 'title': 'Required', 'default': True, 'description': 'Reject an empty value. Every declared header must exist regardless.'}, 'max_length': {'type': 'integer', 'title': 'Max Length', 'default': 10000, 'maximum': 10000, 'minimum': 1}}, 'additionalProperties': False}, 'CsvSchema': {'type': 'object', 'title': 'CsvSchema', 'required': ['columns'], 'properties': {'columns': {'type': 'array', 'items': {'$ref': '#/$defs/Column'}, 'title': 'Columns', 'maxItems': 100, 'minItems': 1}, 'allow_extra_columns': {'type': 'boolean', 'title': 'Allow Extra Columns', 'default': False}}, 'additionalProperties': False}}, 'title': 'validate_csvArguments', 'required': ['csv_text', 'schema'], 'properties': {'schema': {'$ref': '#/$defs/CsvSchema'}, 'csv_text': {'type': 'string', 'title': 'Csv Text', 'description': 'CSV text including header. UTF-8, at most 1 MB; no file paths or URLs.'}, 'delimiter': {'enum': [',', ';', '\t', '|'], 'type': 'string', 'title': 'Delimiter', 'default': ','}, 'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Request Id', 'default': None, 'description': 'Optional 8–128 character retry key. Reuse only for identical arguments; changed data requires a new key.'}}}
view_csv_demo
Run the free CSV validation demo
Validate the fixed example with the current engine. Free and no arguments; demonstrates duplicate, email, amount and date findings. Custom files require validate_csv and paid access.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'view_csv_demoArguments', 'properties': {}}
Añadido
clean_csv
2 de October de 2026 a las 02:40
Añadido
validate_csv
2 de October de 2026 a las 02:40
Añadido
get_csv_usage
2 de October de 2026 a las 02:40
Añadido
view_csv_demo
2 de October de 2026 a las 02:40
Añadido
get_csv_example
2 de October de 2026 a las 02:40