mcp-registry/io.github.aidatatools-dev/data-quality-gate · v0.1.0
As of 2026-10-26 18:42 UTC, the Aidatatools Dev Data Quality Gate MCP server is up with a Glimind reliability score of 94/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 5 minutes.
Post-scrape data cleaner, no LLM: repairs mojibake, HTML, invisible chars. Plus a verdict.
Point your MCP client at this streamable-http endpoint: https://www.aidatatools.dev/api/mcp_server
3 tool(s) have parameters with no type (no type/enum/anyOf/$ref).
Give every parameter a "type" (or "enum"/"anyOf"). Untyped parameters make models guess — strings for numbers, objects for arrays. How to fix →
3 of 3 tool(s) carry no readOnlyHint/destructiveHint annotations.
Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →
No tool declares an outputSchema.
Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →
2 tools share an identical description with another tool on this server.
Make each description say how the tool differs from its siblings, or the model will pick between them at random. How to fix →
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. All of them as JSON: /v1/readiness/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate/fixes
{
"name": "check_dataset_quality",
"description": "Call this before using any dataset. Returns a deterministic quality verdict (RELIABLE / USABLE_WITH_CLEANING / UNRELIABLE) with exact facts: completeness, nulls, type consistency, impossible values, duplicates, outliers, and (on financial/trading data) cross-source price divergence. 100% deterministic, no LLM. Free -- this MCP endpoint runs the engine directly; POST /api (plain REST, same engine) is x402-gated at $0.01/call instead. Input: rawJson (a JSON array of row objects, or a single object",
"inputSchema": {
"type": "object",
"properties": {
"rawJson": {
"description": "The dataset: a JSON array of row objects, or a single object.",
"type": "string"
},
"datasetId": {
"type": "string",
"description": "An Apify dataset id. Not resolvable on this deployment; pass rawJson instead."
}
}
},
"annotations": {
"readOnlyHint": true
}
}{
"name": "clean_scraped_data",
"description": "PAID TIER, CALLED FROM A FREE ENDPOINT -- READ THIS FIRST: this tool does NOT return your cleaned data, and its response has NO `data` key. It returns {\"status\": \"payment_required\", \"what_we_found_in_your_data\": {...}, \"get_the_repaired_data\": {...}}. Do not treat its output as cleaned data and do not write it back into your dataset.\nWHAT YOU GET HERE, FREE: an exact inventory of the defects in YOUR data -- which repair rules would fire, how many values each would change, and which cases cannot ",
"inputSchema": {
"type": "object",
"required": [
"rawJson"
],
"properties": {
"options": {
"type": "object",
"properties": {
"repair_keys": {
"type": "boolean",
"description": "Also repair dict KEYS (the classic '\\ufeffsku' first column of a BOM-prefixed CSV export). Off by default: a key is a contract with everything downstream."
},
"trim_whitespace": {
"type": "boolean",
"description": "Default true."
},
"detect_duplicates": {
"type": "boolean",
"description": "Default true. Set false to skip duplicate detection on very large input."
},
"placeholder_policy": {
"enum": [
"flag",
"null_high_confidence",
"null_all"
],
"type": "string",
"description": "What to do with masked-missing strings. 'flag' (default) reports them and changes nothing. 'null_high_confidence' nulls only tokens that cannot be real data ('N/A', 'null', 'undefined') and never the ambiguous ones ('None' is a surname, 'NA' is Namibia, '-' is a real value). 'null_all' nulls the ambiguous ones too -- only choose this if you know the domain."
},
"coerce_numeric_text": {
"type": "boolean",
"description": "Turn 'US $5.59' into 5.59. Per field, all-or-nothing, and only where every value is unambiguous -- a lone ',' or a mixed currency disqualifies the whole field rather than being guessed at."
},
"drop_exact_duplicates": {
"type": "boolean",
"description": "Remove rows byte-identical to an earlier row, compared AFTER cleaning. Off by default because it changes the row count; duplicates are reported either way."
}
},
"description": "All optional. Every default is the safe one: with no options, the row count, every value's type, and the schema are all guaranteed unchanged."
},
"rawJson": {
"description": "The scraper output: a JSON array of row objects, a single object, or a CSV/plain-text string. The format is detected and the output mirrors the shape you sent.",
"type": "string"
}
}
}
}{
"name": "clean_scraped_data_audited",
"description": "PAID TIER, CALLED FROM A FREE ENDPOINT -- READ THIS FIRST: this tool does NOT return your cleaned data, and its response has NO `data` key. It returns {\"status\": \"payment_required\", \"what_we_found_in_your_data\": {...}, \"get_the_repaired_data\": {...}}. Do not treat its output as cleaned data and do not write it back into your dataset.\nWHAT YOU GET HERE, FREE: an exact inventory of the defects in YOUR data -- which repair rules would fire, how many values each would change, and which cases cannot ",
"inputSchema": {
"type": "object",
"required": [
"rawJson"
],
"properties": {
"options": {
"type": "object",
"properties": {
"repair_keys": {
"type": "boolean",
"description": "Also repair dict KEYS (the classic '\\ufeffsku' first column of a BOM-prefixed CSV export). Off by default: a key is a contract with everything downstream."
},
"trim_whitespace": {
"type": "boolean",
"description": "Default true."
},
"detect_duplicates": {
"type": "boolean",
"description": "Default true. Set false to skip duplicate detection on very large input."
},
"placeholder_policy": {
"enum": [
"flag",
"null_high_confidence",
"null_all"
],
"type": "string",
"description": "What to do with masked-missing strings. 'flag' (default) reports them and changes nothing. 'null_high_confidence' nulls only tokens that cannot be real data ('N/A', 'null', 'undefined') and never the ambiguous ones ('None' is a surname, 'NA' is Namibia, '-' is a real value). 'null_all' nulls the ambiguous ones too -- only choose this if you know the domain."
},
"coerce_numeric_text": {
"type": "boolean",
"description": "Turn 'US $5.59' into 5.59. Per field, all-or-nothing, and only where every value is unambiguous -- a lone ',' or a mixed currency disqualifies the whole field rather than being guessed at."
},
"drop_exact_duplicates": {
"type": "boolean",
"description": "Remove rows byte-identical to an earlier row, compared AFTER cleaning. Off by default because it changes the row count; duplicates are reported either way."
}
},
"description": "All optional. Every default is the safe one: with no options, the row count, every value's type, and the schema are all guaranteed unchanged."
},
"rawJson": {
"description": "The scraper output: a JSON array of row objects, a single object, or a CSV/plain-text string. The format is detected and the output mirrors the shape you sent.",
"type": "string"
}
}
}
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/io.github.aidatatools-dev/data-quality-gate"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/io.github.aidatatools-dev/data-quality-gate"}) over MCP.
clean_scraped_data_audited ~653 tokensclean_scraped_data ~650 tokenscheck_dataset_quality ~225 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate.svg :target: https://glimind.com/server/mcp-registry%2Fio.github.aidatatools-dev%2Fdata-quality-gate?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:24244931165ae3f9…, first seen 2026-10-17, included at leaf 3888 of 74,789. Version history · verify what your client received.
Compare: most reliable data servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-26 18:42 UTC, the Aidatatools Dev Data Quality Gate MCP server is up with a Glimind reliability score of 94/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 2 outages in 90 days, with a median recovery of 5 minutes.
Aidatatools Dev Data Quality Gate MCP server advertises 3 tools, including check_dataset_quality, clean_scraped_data, clean_scraped_data_audited.
Point your MCP client at this streamable-http endpoint: https://www.aidatatools.dev/api/mcp_server
Glimind scanned all 3 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.