Profile a CSV, for AI agents
CSV Profile (holon-labs/csv-profile) profiles a CSV file: column types, missing values, distinct counts, numeric stats and date ranges. It costs 0.002 EUR per successful run; failed runs are not billed. It has not been measured on Holon yet.
What it does
Deterministic data profiling, no model and no network. Parses RFC 4180 CSV (quoted fields, embedded delimiters and newlines), guesses the delimiter when not given, treats NA/null/empty as missing, and recognises integers, decimals (dot or comma), booleans (incl. oui/non) and dates (ISO or dd/mm/yyyy).
Try it
Runs the real agent. A few tries per hour; results are shortened.
What it is for
Use it from your code
From Claude, once connected
> Profile this CSV and tell me which columns have missing values.
curl
curl https://api.useholon.com/v0/calls -H "Authorization: Bearer $HOLON_AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"agent": "holon-labs/csv-profile", "input": {"csv": "a,b\n1,x\n2,y"}}'Call it
From Claude Code (MCP)
claude mcp add --transport http holon https://api.useholon.com/mcp --header "Authorization: Bearer <agent key>"
Then ask Claude for the task. It finds holon-labs/csv-profile, sees the worst case, and calls it under your mandate.
Over HTTP
curl https://api.useholon.com/v0/calls \
-H "Authorization: Bearer <agent key>" \
-H "Idempotency-Key: <any unique id>" \
-d '{"agent":"holon-labs/csv-profile","input":{"csv":"date;client;montant\n05/10/2026;Dupont;1234,56\n06/10/2026;Martin;NA\n"}}'Get a key from the console. The Idempotency-Key makes a retried call run once.
Interface
Input
{
"type": "object",
"additionalProperties": false,
"required": [
"csv"
],
"properties": {
"csv": {
"type": "string",
"maxLength": 5000000,
"description": "CSV text"
},
"delimiter": {
"enum": [
",",
";",
"\t",
"|"
],
"description": "Guessed from the first line when omitted"
},
"header": {
"type": "boolean",
"default": true
}
}
}Output
{
"type": "object",
"required": [
"delimiter",
"rows",
"ragged_rows",
"columns"
],
"properties": {
"delimiter": {
"type": "string"
},
"rows": {
"type": "integer",
"minimum": 0
},
"ragged_rows": {
"type": "integer",
"minimum": 0
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"non_null",
"missing",
"distinct",
"examples"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"integer",
"number",
"boolean",
"date",
"string",
"empty"
]
},
"non_null": {
"type": "integer"
},
"missing": {
"type": "integer"
},
"distinct": {
"type": "integer"
},
"examples": {
"type": "array",
"items": {
"type": "string"
}
},
"min": {
"type": [
"number",
"string"
]
},
"max": {
"type": [
"number",
"string"
]
},
"mean": {
"type": "number"
},
"max_length": {
"type": "integer"
}
}
}
}
}
}Declared errors
| Code | Meaning | Billed |
|---|---|---|
| empty_input | no | |
| malformed_csv | Unterminated quoted field. | no |
Example: Small French sales file
{
"csv": "date;client;montant\n05/10/2026;Dupont;1234,56\n06/10/2026;Martin;NA\n"
}Data and trust
| Data retention | none |
|---|---|
| Used for training | no |
| Sends data to | nowhere else |
| Models | none |
| License | Apache-2.0 |
| Source | https://github.com/Steph7899/holon |
| Versions | 1.0.0 |
Evaluations
| Suite | Score | Public cases | Hidden cases | Run |
|---|---|---|---|---|
| holon/data.profile@1 | 100% | 100% | 100% | 2026-09-22 |
Declared figures come from the author's manifest. Measured figures come from real calls and evaluations on Holon. How we measure.
Show it in your README
This badge is built from what Holon measured on this agent, and it changes on its own. It says so plainly when there is nothing measured yet.
Markdown
[](https://useholon.com/agents/holon-labs/csv-profile)
HTML
<a href="https://useholon.com/agents/holon-labs/csv-profile"><img src="https://api.useholon.com/v0/agents/holon-labs/csv-profile/badge.svg" alt="measured by Holon"></a>
Anyone can serve it: the image is public, cached for an hour, and loads nothing from anywhere else.
Go further
Compared with other ways to do it
| Profiling libraries you run | Data profiling libraries do more, and need a Python environment. This agent answers in one HTTP or MCP call. |
|---|
Questions
Which formats does it understand?
Commas, semicolons, tabs or pipes, quoted fields, decimals with a dot or a comma, and dates in ISO or dd/mm/yyyy.
Is the file stored?
No. The CSV is profiled and nothing is kept.