Import Check: Validate & Clean CSV
Validate and prepare CSV; reconcile two tables with exact keys and full findings. Fixed free demos.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"import-check": {
"url": "https://import-check-production.up.railway.app/mcp"
}
}
}Remote-Endpunkte
https://import-check-production.up.railway.app/mcpstreamable-httphttps://check.orvel.dev/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (10)
🟢get_csv_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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "get_csv_exampleArguments"
}🟢view_csv_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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "view_csv_demoArguments"
}🟢get_csv_usage
Read remaining operations and expiry for the API key supplied in the Authorization header. Does not consume credit.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "get_csv_usageArguments"
}🟢get_table_example
Return fixed synthetic left/right tables and a reusable join recipe. No arguments, key or credit. Copy the structure for reconcile_tables; mode controls which unmatched rows appear in output.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "get_table_exampleArguments"
}🟢view_table_demo
Join the bundled fixed tables and show changed and unmatched records. No arguments, key or credit. This cannot process custom data; use reconcile_tables with a paid key for your files.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "view_table_demoArguments"
}🟢inspect_table(table, request_id)
Profile a CSV or explicit string table before writing a recipe. Return empty, distinct and duplicate-value counts per column and complete formula warnings; no schema or business validity is inferred. Supply CSV OR columns/rows, never both. JSON numbers must be encoded as strings so identifiers keep leading zeros. One paid operation; no content retained. Reuse request_id only for identical input.
Eingabe-Schema
{
"type": "object",
"properties": {
"table": {
"$ref": "#/$defs/TableInput"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"table"
],
"$defs": {
"TableInput": {
"additionalProperties": false,
"properties": {
"csv_text": {
"anyOf": [
{
"maxLength": 1000000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CSV including headers; no paths or URLs.",
"title": "Csv Text"
},
"delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Delimiter",
"type": "string"
},
"columns": {
"anyOf": [
{
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Columns"
},
"rows": {
"anyOf": [
{
"items": {
"items": {
"maxLength": 10000,
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"maxItems": 10000,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Rows"
}
},
"title": "TableInput",
"type": "object"
}
},
"title": "inspect_tableArguments"
}⚪prepare_table(table, recipe, request_id)
Select, rename, derive and convert columns using a caller-owned version-1 recipe. Rules reference original input headers; output follows recipe order and omitted columns are listed. All input rows remain. Any failed conversion returns valid=false, all findings and csv_text=null, never a partially transformed file. No arithmetic, arbitrary code, schema inference or destination writes. One completed report costs one operation, including valid=false. Use reconcile_tables for two-file matching.
Eingabe-Schema
{
"type": "object",
"properties": {
"table": {
"$ref": "#/$defs/TableInput"
},
"recipe": {
"$ref": "#/$defs/Recipe"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"table",
"recipe"
],
"$defs": {
"OutputColumn": {
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 100,
"minLength": 1,
"title": "Name",
"type": "string"
},
"source": {
"anyOf": [
{
"maxLength": 100,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source"
},
"literal": {
"anyOf": [
{
"maxLength": 10000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Literal"
},
"concat": {
"anyOf": [
{
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Concat"
},
"separator": {
"default": "",
"maxLength": 100,
"title": "Separator",
"type": "string"
},
"actions": {
"description": "Ordered rules. Dates explicitly use DD/MM/YYYY or MM/DD/YYYY; failed conversions block the output.",
"items": {
"enum": [
"trim",
"lowercase",
"uppercase",
"decimal_comma",
"date_dmy",
"date_mdy"
],
"type": "string"
},
"maxItems": 10,
"title": "Actions",
"type": "array"
}
},
"required": [
"name"
],
"title": "OutputColumn",
"type": "object"
},
"Recipe": {
"additionalProperties": false,
"properties": {
"version": {
"const": 1,
"default": 1,
"title": "Version",
"type": "integer"
},
"columns": {
"description": "Explicit output order; unselected input columns are omitted and reported.",
"items": {
"$ref": "#/$defs/OutputColumn"
},
"maxItems": 100,
"minItems": 1,
"title": "Columns",
"type": "array"
},
"output_delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Output Delimiter",
"type": "string"
},
"spreadsheet_safe": {
"default": false,
"title": "Spreadsheet Safe",
"type": "boolean"
}
},
"required": [
"columns"
],
"title": "Recipe",
"type": "object"
},
"TableInput": {
"additionalProperties": false,
"properties": {
"csv_text": {
"anyOf": [
{
"maxLength": 1000000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CSV including headers; no paths or URLs.",
"title": "Csv Text"
},
"delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Delimiter",
"type": "string"
},
"columns": {
"anyOf": [
{
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Columns"
},
"rows": {
"anyOf": [
{
"items": {
"items": {
"maxLength": 10000,
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"maxItems": 10000,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Rows"
}
},
"title": "TableInput",
"type": "object"
}
},
"title": "prepare_tableArguments"
}⚪reconcile_tables(left, right, recipe, request_id)
Join two bounded tables using exact string or composite keys. Both sides must have non-empty unique keys: duplicates block the entire output, including many-to-many matches. Choose left, inner or full retention explicitly; unmatched records are reported even if excluded. Optional compare fields flag changed values without resolving them. Output includes row lineage; missing-side fields are empty strings. No trimming, fuzzy matching or destination writes. Combined inputs share 1 MB/10,000 records/250,000 cells. One completed report costs one operation; reuse request_id for identical retries. Full findings or an uncharged size error, never silent truncation.
Eingabe-Schema
{
"type": "object",
"properties": {
"left": {
"$ref": "#/$defs/TableInput"
},
"right": {
"$ref": "#/$defs/TableInput"
},
"recipe": {
"$ref": "#/$defs/JoinRecipe"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"left",
"right",
"recipe"
],
"$defs": {
"JoinColumn": {
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 100,
"minLength": 1,
"title": "Name",
"type": "string"
},
"side": {
"enum": [
"left",
"right"
],
"title": "Side",
"type": "string"
},
"column": {
"maxLength": 100,
"minLength": 1,
"title": "Column",
"type": "string"
}
},
"required": [
"name",
"side",
"column"
],
"title": "JoinColumn",
"type": "object"
},
"JoinRecipe": {
"additionalProperties": false,
"properties": {
"version": {
"const": 1,
"default": 1,
"title": "Version",
"type": "integer"
},
"keys": {
"description": "Exact string composite key. Empty or duplicate keys on either side block output.",
"items": {
"$ref": "#/$defs/KeyPair"
},
"maxItems": 10,
"minItems": 1,
"title": "Keys",
"type": "array"
},
"mode": {
"description": "Explicit row-retention choice. Unmatched rows are always reported, including those excluded from output.",
"enum": [
"left",
"inner",
"full"
],
"title": "Mode",
"type": "string"
},
"columns": {
"items": {
"$ref": "#/$defs/JoinColumn"
},
"maxItems": 100,
"minItems": 1,
"title": "Columns",
"type": "array"
},
"compare": {
"description": "Optional paired fields; unequal matched values produce value_changed warnings, not automatic resolution.",
"items": {
"$ref": "#/$defs/KeyPair"
},
"maxItems": 100,
"title": "Compare",
"type": "array"
},
"output_delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Output Delimiter",
"type": "string"
},
"spreadsheet_safe": {
"default": false,
"title": "Spreadsheet Safe",
"type": "boolean"
}
},
"required": [
"keys",
"mode",
"columns"
],
"title": "JoinRecipe",
"type": "object"
},
"KeyPair": {
"additionalProperties": false,
"properties": {
"left": {
"maxLength": 100,
"minLength": 1,
"title": "Left",
"type": "string"
},
"right": {
"maxLength": 100,
"minLength": 1,
"title": "Right",
"type": "string"
}
},
"required": [
"left",
"right"
],
"title": "KeyPair",
"type": "object"
},
"TableInput": {
"additionalProperties": false,
"properties": {
"csv_text": {
"anyOf": [
{
"maxLength": 1000000,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CSV including headers; no paths or URLs.",
"title": "Csv Text"
},
"delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Delimiter",
"type": "string"
},
"columns": {
"anyOf": [
{
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Columns"
},
"rows": {
"anyOf": [
{
"items": {
"items": {
"maxLength": 10000,
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"maxItems": 10000,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Rows"
}
},
"title": "TableInput",
"type": "object"
}
},
"title": "reconcile_tablesArguments"
}🟢validate_csv(csv_text, schema, delimiter, request_id)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"csv_text": {
"description": "CSV text including header. UTF-8, at most 1 MB; no file paths or URLs.",
"title": "Csv Text",
"type": "string"
},
"schema": {
"$ref": "#/$defs/CsvSchema"
},
"delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Delimiter",
"type": "string"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional 8–128 character retry key. Reuse only for identical arguments; changed data requires a new key.",
"title": "Request Id"
}
},
"required": [
"csv_text",
"schema"
],
"$defs": {
"Column": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Exact, case-sensitive header after any cleanup rename.",
"maxLength": 100,
"minLength": 1,
"title": "Name",
"type": "string"
},
"type": {
"default": "string",
"enum": [
"string",
"integer",
"decimal",
"boolean",
"date",
"email"
],
"title": "Type",
"type": "string"
},
"required": {
"default": true,
"description": "Reject an empty value. Every declared header must exist regardless.",
"title": "Required",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Require non-empty raw strings to be unique within this column.",
"title": "Unique",
"type": "boolean"
},
"choices": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 100,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional exact allowed strings, checked before type conversion.",
"title": "Choices"
},
"minimum": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive numeric bound, as a decimal string. Numeric columns only.",
"title": "Minimum"
},
"maximum": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive numeric bound, as a decimal string. Numeric columns only.",
"title": "Maximum"
},
"max_length": {
"default": 10000,
"maximum": 10000,
"minimum": 1,
"title": "Max Length",
"type": "integer"
}
},
"required": [
"name"
],
"title": "Column",
"type": "object"
},
"CsvSchema": {
"additionalProperties": false,
"properties": {
"columns": {
"items": {
"$ref": "#/$defs/Column"
},
"maxItems": 100,
"minItems": 1,
"title": "Columns",
"type": "array"
},
"allow_extra_columns": {
"default": false,
"title": "Allow Extra Columns",
"type": "boolean"
}
},
"required": [
"columns"
],
"title": "CsvSchema",
"type": "object"
}
},
"title": "validate_csvArguments"
}🟢clean_csv(csv_text, schema, cleanup, delimiter, request_id)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"csv_text": {
"title": "Csv Text",
"type": "string"
},
"schema": {
"$ref": "#/$defs/CsvSchema"
},
"cleanup": {
"$ref": "#/$defs/Cleanup"
},
"delimiter": {
"default": ",",
"enum": [
",",
";",
"\t",
"|"
],
"title": "Delimiter",
"type": "string"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"csv_text",
"schema",
"cleanup"
],
"$defs": {
"Change": {
"additionalProperties": false,
"properties": {
"column": {
"description": "Original header before any renaming.",
"maxLength": 100,
"minLength": 1,
"title": "Column",
"type": "string"
},
"action": {
"enum": [
"trim",
"lowercase",
"uppercase",
"decimal_comma"
],
"title": "Action",
"type": "string"
}
},
"required": [
"column",
"action"
],
"title": "Change",
"type": "object"
},
"Cleanup": {
"additionalProperties": false,
"properties": {
"rename": {
"additionalProperties": {
"type": "string"
},
"description": "Original header to new header; simultaneous rename, no dropping columns.",
"title": "Rename",
"type": "object"
},
"changes": {
"description": "Applied in order to explicitly named original columns only.",
"items": {
"$ref": "#/$defs/Change"
},
"maxItems": 100,
"title": "Changes",
"type": "array"
},
"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.",
"title": "Spreadsheet Safe",
"type": "boolean"
}
},
"title": "Cleanup",
"type": "object"
},
"Column": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Exact, case-sensitive header after any cleanup rename.",
"maxLength": 100,
"minLength": 1,
"title": "Name",
"type": "string"
},
"type": {
"default": "string",
"enum": [
"string",
"integer",
"decimal",
"boolean",
"date",
"email"
],
"title": "Type",
"type": "string"
},
"required": {
"default": true,
"description": "Reject an empty value. Every declared header must exist regardless.",
"title": "Required",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Require non-empty raw strings to be unique within this column.",
"title": "Unique",
"type": "boolean"
},
"choices": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 100,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional exact allowed strings, checked before type conversion.",
"title": "Choices"
},
"minimum": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive numeric bound, as a decimal string. Numeric columns only.",
"title": "Minimum"
},
"maximum": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive numeric bound, as a decimal string. Numeric columns only.",
"title": "Maximum"
},
"max_length": {
"default": 10000,
"maximum": 10000,
"minimum": 1,
"title": "Max Length",
"type": "integer"
}
},
"required": [
"name"
],
"title": "Column",
"type": "object"
},
"CsvSchema": {
"additionalProperties": false,
"properties": {
"columns": {
"items": {
"$ref": "#/$defs/Column"
},
"maxItems": 100,
"minItems": 1,
"title": "Columns",
"type": "array"
},
"allow_extra_columns": {
"default": false,
"title": "Allow Extra Columns",
"type": "boolean"
}
},
"required": [
"columns"
],
"title": "CsvSchema",
"type": "object"
}
},
"title": "clean_csvArguments"
}Community
Nachweis