← The evidence ledger
Evidence row 32743
Observed , by baseline/1.
- Kind
- listing
- About
- source_record mcp_registry:io.github.aidatatools-dev/data-quality-gate
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- ce71088e2cb484f122f3d957cf02f1e7afc715409bfb68f3d9eb86a6aafdc6f8
- Leaf
- 0xdbd6b347603561b9bb2de86bcfddd9d481ff0e8fe28dfc69c9cb0696a05bcc99
What was observed
{
"endpoints": [
[
"mcp",
"https://www.aidatatools.dev/api/mcp_server"
],
[
"web",
"https://www.aidatatools.dev/llms.txt"
]
],
"name": "Data Quality Gate - deterministic post-scrape cleaner + verdict",
"owner_address": null,
"raw": {
"_meta": {
"io.modelcontextprotocol.registry/official": {
"isLatest": true,
"publishedAt": "2026-08-12T07:23:32.533208Z",
"status": "active",
"statusChangedAt": "2026-08-12T07:23:32.533208Z",
"updatedAt": "2026-08-12T07:23:32.533208Z"
}
},
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"boundary": "20 rules, published in full and free at GET https://www.aidatatools.dev/api/clean -- readable before paying. 7 are applied automatically (information-preserving), 5 need an explicit opt-in (they change row count, type or schema), and 8 are only ever reported, with no option to turn them on: near-duplicates are never merged, ambiguous placeholders are never nulled ('None' is a surname, 'NA' is Namibia), full NFKC is never applied (it rewrites 10^2 to 102), and failed extractions ('captcha', 'access denied') are never deleted -- that value is what tells you the record must be re-scraped. Impossible values are never repaired at all.",
"docs": {
"boundary": "https://www.aidatatools.dev/api/clean",
"full": "https://www.aidatatools.dev/llms-full.txt",
"openapi": "https://www.aidatatools.dev/openapi.json",
"summary": "https://www.aidatatools.dev/llms.txt"
},
"guarantees": "Deterministic and idempotent. No value is emptied, retyped or reordered by an automatic rule. A repair that would introduce a defect the original did not have is reverted and flagged. The audited tier's ledger restores the input byte for byte.",
"measured": "Real 100-row Amazon scrape, 57,956 nested string values: 453 repairs, 0 reverts, 0 values emptied. A control set of legitimate-but-suspicious data (French accents, Persian ZWNJ, emoji ZWJ, 10^2, AT&T, surname 'None', 'NA') comes back byte-for-byte identical: 0 changes, 11 flags.",
"positioning": "Deterministic post-scrape data cleaner and quality gate. Repairs how data was ENCODED -- residual HTML, mojibake ('Café' -> 'Café'), invisible characters, non-breaking spaces -- and never what it SAYS. No LLM: identical input always yields byte-identical output, so results can be cached, replayed and audited.",
"tags": [
"data cleaning",
"scraping repair",
"post-scrape sanitization",
"deterministic data repair",
"mojibake correction",
"encoding repair",
"scraper output cleaning",
"auditable data repair"
],
"tools": {
"check_dataset_quality": "FREE here. The full quality verdict: score, per-check facts, and RELIABLE / USABLE_WITH_CLEANING / UNRELIABLE. Bought once per source, then cached.",
"clean_scraped_data": "Free to call, but it does NOT return the repaired data -- its response has no 'data' key. It reports which rules would fire on your data and what needs your decision, then names the paid call that hands the data back: POST https://www.aidatatools.dev/api/clean, $0.04 via x402, no account or signup. Call it after every extraction run -- a verdict is cached per source, but dirt is produced fresh by every run.",
"clean_scraped_data_audited": "Same, pointing at POST https://www.aidatatools.dev/api/clean/audit, $0.12: the repaired data plus a replayable, reversible ledger of every transformation."
},
"why_repair_is_paid": "Detection is free on this endpoint and always has been. The repaired artifact is the paid product, because it is re-bought on every extraction run rather than cached like a verdict. Both cleaning tools say so in their own descriptions, before they are called."
}
},
"description": "Post-scrape data cleaner, no LLM: repairs mojibake, HTML, invisible chars. Plus a verdict.",
"name": "io.github.aidatatools-dev/data-quality-gate",
"remotes": [
{
"type": "streamable-http",
"url": "https://www.aidatatools.dev/api/mcp_server"
}
],
"title": "Data Quality Gate - deterministic post-scrape cleaner + verdict",
"version": "0.3.0",
"websiteUrl": "https://www.aidatatools.dev/llms.txt"
}
},
"source": "mcp_registry",
"summary": "Post-scrape data cleaner, no LLM: repairs mojibake, HTML, invisible chars. Plus a verdict."
}What the leaf hashes
{"body":"ce71088e2cb484f122f3d957cf02f1e7afc715409bfb68f3d9eb86a6aafdc6f8","id":32743,"kind":"listing","method":"baseline/1","observed_us":1793025366878376,"prev":null,"subject":"mcp_registry:io.github.aidatatools-dev/data-quality-gate","subject_kind":"source_record"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0xdbd6ab94b36a8cbdd7e1794afbc114b1f84562fc12b25eef59d7ed9fa9b14924
- 0x6edfadb600008132899de144a21eee3d27394ff2667fa491dba112f9bfb6e955
- 0x0a90ab0719b507046ea7d70a3e14fbefb5412b208e5544715cb9ee63447528fb
- 0x7f9d760613de4cbce21b79a6811e1262488737617794fd34b2d25b9f96c58577
- 0xb1ebd8c1e2c60b0f024d67fc8e4cc8f38c2dffde8be9aaf18e833576bf256574
- 0xcfe36e296773bca07d68ea8dfaeaedfca8b7ad0f797ea554e066a327fcf9b780
- 0x9d9528abd6f1b0edee61597a4f9034b6d094f1a0dffee5897913c1a760b8169b
- 0x979121c2dc21857cef134d4fba1ffa2c1f45c8ec21449e4fcf17f5162e9c62a4
- 0xb12bf79b1127ae95b792528a83a4feec56a64daf72dfb69f7beeb7a0a4b7f092
- 0xafea070fa3cd55d0c50ec39d914de8a0022e87d64becb9dc6998df49697576c3
- 0x7ec512db50ffb560b82f17e53667bcea802a69de4d98e67a44363985fac7f4da
- 0x4b7a7525bd11eaa3154ce1b1171d1b54b83370163f39203e230c520e42560c4b
- 0xa4edde833302b48399053e2519aea1aed1074cd102bf4b553643df1866cce4ec
- 0x0b7541c75cc482a7134110311d7dbd02095d969ba21177de9b21a52a55981718
- 0x6dc40f983a3840a0ad927a9ca17f4ff1e3b649a6c735e2a09b140db7c2caf13b
- 0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023
- 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae