A pay-per-call preflight check for spreadsheets, built for agents.
Before an agent ingests an unfamiliar CSV or XLSX, it can ask tablint whether the file is safe to load and what is structurally wrong with it. tablint returns a machine verdict: a clean/needs-cleaning/reject call, the blocking problems, per-sheet structure, and per-column types. Payment happens inline over HTTP via the x402 protocol, so there is nothing to sign up for.
Endpoint
POST https://tablint.dev/v1/table/preflight
Content-Type: application/json
{ "file_url": "https://example.com/data.csv", "checks": ["all"] }
Any x402 client library handles the 402 -> pay -> retry flow. For example, with the Python SDK:
pip install "x402[evm,requests]" eth-account requests
A reference buyer client is in the
x402gate repo under
tools/buyer.py.
{
"verdict": "clean | needs_cleaning | needs_review | reject | not_a_table",
"recommended_action": "ingest_directly | clean_then_ingest | split_tables_then_ingest | review | reject",
"confidence": 0.0,
"blocking_conditions": [],
"warnings": [],
"sheets": [ { "name", "hidden", "used_range", "header_row_index",
"multiple_tables_detected", "merged_cells", "formula_cells", ... } ],
"columns": [ { "name", "inferred_type", "null_pct", "type_consistency",
"numbers_as_text", "ambiguous_dates", "duplicate_name", ... } ]
}
Receiving wallet 0xf07538B80b6959E5B8e4b5dF65C73194D50fB7Eb
Inputs: CSV, TSV, XLSX up to 10 MB. Files are analyzed in isolation and never stored.
Machine-readable manifest: /.well-known/x402