{"audit":{"version":"1.4","generated_at":"2026-08-19T17:42:09.945422+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/www.aidatatools.dev","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"www.aidatatools.dev","name":"Data Quality Gate","url":"https://www.aidatatools.dev/.well-known/agent-card.json"}},"identity":{"provider":{"organization":"aidatatools","url":"https://github.com/aidatatools-dev"},"registry_verification":null,"signature":{"signed":false,"signature_valid":null}},"protocol":{"version":"1.0","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"live","live_responds":true,"last_status_code":200,"last_elapsed_ms":45,"last_error":null},"track_record":{"first_seen":"2026-08-10T09:30:05.326009+00:00","last_checked":"2026-08-19T11:02:11.132859+00:00","last_seen_ok":"2026-08-19T11:02:11.132859+00:00","checks_total":41,"checks_ok":41,"uptime_pct":100.0,"archived":false,"archived_reason":null},"conformance":{"score":76,"grade":"B","summary":"B-grade: working agent with minor gaps (often unsigned cards or thin metadata).","criteria":[{"key":"valid_card","label":"Valid AgentCard","points":10,"max_points":10,"status":"pass","detail":"Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification)."},{"key":"live_responds","label":"Live JSON-RPC","points":25,"max_points":25,"status":"pass","detail":"Endpoint responds to a negotiated A2A SendMessage probe (answers in ~158 ms)."},{"key":"protocol_version","label":"Protocol version","points":10,"max_points":10,"status":"pass","detail":"Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape)."},{"key":"signature","label":"JWS signature","points":0,"max_points":10,"status":"info","detail":"Card is unsigned (most published agents are)."},{"key":"uptime","label":"Uptime track record","points":15,"max_points":15,"status":"pass","detail":"41/41 probes succeeded (100% uptime)."},{"key":"skills","label":"Skill declaration","points":6,"max_points":10,"status":"partial","detail":"Declares 1 skill, usable but thin."},{"key":"verified_identity","label":"Verified Identity","points":5,"max_points":10,"status":"partial","detail":"Provider declared: aidatatools (https://github.com/aidatatools-dev). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit."},{"key":"freshness","label":"Freshness + modern flags","points":5,"max_points":5,"status":"pass","detail":"declares 1 modern capability flag(s) (x402); seen in upstream source within 0d"},{"key":"security","label":"Security declaration","points":0,"max_points":5,"status":"info","detail":"Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated."}]},"card_read":{"findings":[],"clean":true,"source_url":"https://www.aidatatools.dev/.well-known/agent-card.json"},"skills":[{"id":"check_dataset_quality","name":"Check Dataset Quality","description":"Deterministically verifies the reliability of a tabular JSON dataset before an agent acts on it. Runs 8 checks -- structural homogeneity, completeness, null rate, type consistency, impossible/out-of-range values, exact and near (fuzzy) duplicate detection, statistical outliers (Tukey fence), and field cardinality -- and returns a transparent, recomputable 0-100 score plus a RELIABLE / USABLE_WITH_CLEANING / UNRELIABLE verdict with ranked reasons and a concrete cleanup recommendation. No LLM is involved: the same dataset always produces the exact same facts, score, and verdict. Three further signals report alongside the score without ever moving it. On financial/trading data -- a symbol/ticker/asset field paired with a price/cost/rate field -- it detects cross-source price divergence for the same entity (e.g. the same trading pair quoted very differently by two exchanges), grouped per entity rather than compared globally. On scraped or aggregated text it DETECTS extraction artifacts: leftover HTML and boilerplate, mojibake from wrong-codec decoding, invisible characters, and placeholders such as \"N/A\" or \"null\" that completeness counts as present and types counts as a valid string. And inside the outlier check it reports a robust median/MAD cross-check, surfacing anomalies the Tukey fence structurally cannot see once a cluster of corrupted values widens its bounds. All three are additional facts for review, deliberately not factored into score or verdict. Call it right after scraping, before loading data into a RAG pipeline, before a trading agent acts on aggregated market data, or whenever a dataset comes from an unverified source. Built to be called repeatedly -- once per batch -- as a recurring step in a pipeline, not a one-off check and not a real-time/streaming feed. SCOPE NOTE: this skill DETECTS those text artifacts; it does not repair them, and this A2A interface offers no repair skill. To get the repaired data back, call POST https://www.aidatatools.dev/api/clean over plain HTTP ($0.04 via x402, no account or signup) -- the response body is the cleaned dataset in the shape you posted it.","tags":["data quality","data validation","dataset validation","reliability","verification","deterministic","duplicates","duplicate detection","nulls","missing values","outliers","anomaly detection","data profiling","scraper output validation","post-scrape validation","RAG pipeline guardrail","pre-ingestion check","per-batch validation","pipeline quality gate","recurring data check","financial data validation","trading data quality","on-chain data verification","pre-trade data check","market data validation","price divergence detection","text quality","encoding validation","mojibake detection","scraper artifact detection","invisible character detection"],"examples":["Check this scraped product dataset before I load it into my pipeline","Is this dataset reliable enough to use for analysis?","Find duplicates, nulls, and outliers in this JSON dataset","Give me a quality score and verdict for this data before I feed it to my agent","Check this aggregated crypto price feed for cross-exchange divergence before I trade on it","Does this scrape contain mojibake, leftover HTML or invisible characters?"],"inputModes":["application/json"],"outputModes":["application/json"]}],"provenance":[{"source":"mcp_registry","first_seen":"2026-08-10T09:30:05.326009+00:00"},{"source":"x402_list","first_seen":"2026-08-11T15:44:26.952508+00:00"}],"recent_probes":[{"fetched_at":"2026-08-19T11:02:11.132859+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":45,"live_responds":true},{"fetched_at":"2026-08-18T18:08:35.986419+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":44,"live_responds":true},{"fetched_at":"2026-08-18T08:10:56.467239+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":346,"live_responds":true},{"fetched_at":"2026-08-18T01:54:08.736423+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":32,"live_responds":true},{"fetched_at":"2026-08-17T07:25:56.591762+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":46,"live_responds":true},{"fetched_at":"2026-08-16T19:02:28.535888+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":206,"live_responds":true},{"fetched_at":"2026-08-16T08:23:52.314029+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":44,"live_responds":true},{"fetched_at":"2026-08-16T02:15:57.765871+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":30,"live_responds":true},{"fetched_at":"2026-08-15T08:15:54.132862+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":35,"live_responds":true},{"fetched_at":"2026-08-14T23:35:45.745899+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":176,"live_responds":true}],"catalog_attestation":null,"operator_revenue_evidence":{"evidence_class":"operator_submitted","authenticity":{"rung":"no_operator_evidence","rank":0,"why":"No verifiable operator evidence has been submitted for this agent.","thresholds":{"min_independent_payers":3,"min_verified_usd":25.0},"engine_table":"agent_authenticity","merge_rule":"max(existing_rank, rank)"},"metric_metadata":{"provenance":"operator_submitted_evidence","confidence":"attested","coverage":{"numerator":0},"as_of":"2026-08-19T17:42:09.950433+00:00","definition":"Revenue proofs submitted by the verified owner and re-checked by Agenstry against the settlement chain or the operator's own Stripe account. Only independently confirmed proofs are counted."},"counts":{"retained":0,"verified":0,"unverifiable":0},"verified":{"gross_usd":0.0,"transactions":0,"independent_payers":0},"detail_url":"https://agenstry.com/api/agents/www.aidatatools.dev/evidence","dispute_url":"https://agenstry.com/agents/www.aidatatools.dev/dispute"},"verification_history":[]}