CleanChart
Clean messy tabular data and render publication-ready PNG charts from your AI assistant.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"cleanchart": {
"url": "https://www.cleanchart.app/api/mcp"
}
}
}Puntos de conexión remotos
https://www.cleanchart.app/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (8)
🟢list_chart_types
List all chart types CleanChart can render, each with its default config object. Use a default config as the starting point, override what you need (title, xColumn, yColumn, colors, ...), then call validate_chart_config before generate_chart.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢validate_chart_config(chartType, config)
Dry-run validation of a chart config for a given chart type. Returns valid:true or a list of human-readable problems to fix. Always call this before generate_chart — it is free and instant, while a failed render costs a rate-limited attempt.
Esquema de entrada
{
"type": "object",
"properties": {
"chartType": {
"description": "Chart type id from list_chart_types",
"type": "string"
},
"config": {
"description": "Chart config object (start from the type's defaultConfig)",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"chartType",
"config"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢detect_data_issues(data)
Analyze tabular data for quality issues before charting: duplicates, missing values, whitespace, invalid tokens (N/A, -, ?), type mismatches, outliers, inconsistent date formats, and per-column inferred types. Returns a report whose findings map directly to apply_data_fixes options.
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "Tabular data as an array of row objects, e.g. [{\"Month\":\"2026-01\",\"Sales\":120}, ...]. All rows should share the same keys (column names).",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴apply_data_fixes(data, fixOptions)
Clean tabular data with CleanChart's fix engine and get the cleaned rows back plus a change log. Options (all optional booleans unless noted): remove_duplicates, remove_empty_rows, remove_empty_columns, trim_whitespace, replace_invalid_values (turn N/A/-/? into null), nullify_missing, convert_types, missing_strategy ('fill_smart' fills gaps with column mean or 'Unknown'), date_standardization with date_columns (string[], converts recognized date formats to YYYY-MM-DD), strip_numeric_formatting with format_columns (string[]), strip_coded_values with coded_columns (string[]).
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "Tabular data as an array of row objects, e.g. [{\"Month\":\"2026-01\",\"Sales\":120}, ...]. All rows should share the same keys (column names).",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"fixOptions": {
"description": "Fix options object, e.g. {\"remove_duplicates\":true,\"date_standardization\":true,\"date_columns\":[\"Date\"]}",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"data",
"fixOptions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡generate_chart(data, chartType, config, returnUrl)
Render a publication-ready chart from tabular data and return it as a PNG image. By default the image is only delivered inline and never stored — in chat UIs the user can save it straight from the conversation. If the user needs a downloadable file (e.g. your client cannot save inline images), pass returnUrl:true: the response then also includes chartUrl, a direct link to the PNG valid for 24 hours — surface it to the user. Without an API key the free tier applies: watermark and reduced resolution — mention the upgrade info from the response to the user if they want a clean export (create_checkout provides a payment link). With a CleanChart API key (Authorization: Bearer cc_...) and an active subscription or 24h day pass, output is clean and full resolution. Call validate_chart_config first; large datasets are sampled automatically.
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "Tabular data as an array of row objects, e.g. [{\"Month\":\"2026-01\",\"Sales\":120}, ...]. All rows should share the same keys (column names).",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"chartType": {
"description": "Chart type id from list_chart_types",
"type": "string"
},
"config": {
"description": "Validated chart config",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"returnUrl": {
"description": "Set true to also get chartUrl, a 24h download link to the PNG. This stores a copy of the rendered chart on CleanChart's servers for 24 hours — leave unset for the default privacy-preserving inline-only delivery.",
"type": "boolean"
}
},
"required": [
"data",
"chartType",
"config"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_entitlements
Show the caller's current CleanChart tier. Anonymous callers are free tier (watermarked, reduced resolution). With an API key (Authorization: Bearer cc_..., created in the CleanChart dashboard) this reflects the account's subscription or 24h day pass.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_checkout(kind, data, chartType, config)
Create a payment link the USER must open in their browser — never call this without the user explicitly asking to purchase. kind 'single_chart' (pass the exact data, chartType, and config to be rendered; after payment call claim_chart to receive the clean chart), 'day_pass' (24h unlimited clean exports), or 'subscription' (monthly unlimited). day_pass and subscription are account-based: after payment CleanChart emails a sign-in link, and an API key from the dashboard unlocks clean renders over MCP.
Esquema de entrada
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"single_chart",
"day_pass",
"subscription"
]
},
"data": {
"description": "single_chart only: the rows to render after payment",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"chartType": {
"description": "single_chart only",
"type": "string"
},
"config": {
"description": "single_chart only: validated chart config",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"kind"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡claim_chart(purchaseId, checkoutId, returnUrl)
Redeem a paid single-chart purchase (from create_checkout with kind 'single_chart') and receive the clean, full-resolution PNG. Call this after the user confirms payment. Returns payment_pending while the checkout is unpaid — wait for the user, do not poll in a loop. By default the image is only delivered inline and never stored; pass returnUrl:true if the user needs a downloadable file — the response then also includes chartUrl, a direct link to the PNG valid for 24 hours — surface it to the user.
Esquema de entrada
{
"type": "object",
"properties": {
"purchaseId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10,64}$"
},
"checkoutId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,64}$"
},
"returnUrl": {
"description": "Set true to also get chartUrl, a 24h download link to the purchased PNG. This stores a copy on CleanChart's servers for 24 hours — leave unset for inline-only delivery.",
"type": "boolean"
}
},
"required": [
"purchaseId",
"checkoutId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia