Import Check: Validate & Clean CSV

Validate and prepare CSV; reconcile two tables with exact keys and full findings. Fixed free demos.

사용해야 할까요

품질 및 안전성

B
설명 품질
100%
스키마 완전성
48%
이름 품질
90%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,866토큰 (도구 정의)
~3.5 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.02%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "import-check": {
      "url": "https://import-check-production.up.railway.app/mcp"
    }
  }
}

원격 엔드포인트

https://import-check-production.up.railway.app/mcpstreamable-http
https://check.orvel.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 10개
검증됨버전이 기록되지 않음도구 10개