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,866Token(工具定義)
~3.5 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.02%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `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 個工具