{"ok":true,"schema_version":1,"data":{"agent_readiness":{"blocker_level":"none","blockers":[],"missing_fields":[],"status":"callable"},"categories":["baseline-augmented","baseline-curated","identity-reviewed","official-docs","official-source-repo","official-website","tensorplex"],"completeness_score":93,"contract_version":"2026-07-03.2","example_count":0,"examples":[],"generated_at":"2026-07-27T10:51:25.049Z","integration_readiness":100,"name":"Dojo","netuid":52,"readiness":{"components":{"active_lifecycle":true,"auth_clarity":true,"callable_now":true,"documented":true,"has_callable_api":true,"has_candidate_api":false,"has_public_docs":true,"has_source_repo":true,"profile_complete":true},"readiness_tier":"buildable","readiness_version":2,"score":100,"readiness_verified":true},"schema_version":1,"service_count":4,"services":[{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://huggingface.co/datasets/tensorplex-labs/Dojo-HumanFeedback-DPO","capability":"Dojo Human Feedback DPO dataset","description":"Public Tensorplex Dojo (SN52) HuggingFace DPO dataset of human-feedback preference pairs collected through the subnet's Dojo human-feedback-loop platform; not gated. The dojo repo README (source) declares the Bittensor subnet (--netuid 52) and the tensorplex-labs HF org owns the dataset. Distinct from the subnet's registered Dojo-Synthetic-SFT dataset.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"ok","classification":"live","latency_ms":384,"last_ok":"2026-07-27T23:00:18.289Z","last_checked":"2026-07-27T23:00:18.289Z","stale":false,"observed_by":"live-cron-prober"},"kind":"data-artifact","provider":"tensorplex","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://huggingface.co/datasets/tensorplex-labs/Dojo-HumanFeedback-DPO'","python":"import requests\n\nresp = requests.get(\"https://huggingface.co/datasets/tensorplex-labs/Dojo-HumanFeedback-DPO\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://huggingface.co/datasets/tensorplex-labs/Dojo-HumanFeedback-DPO\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-52-dojo-humanfeedback-dpo"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://huggingface.co/datasets/tensorplex-labs/Dojo-Synthetic-SFT","capability":"Dojo synthetic SFT dataset","description":"Public Tensorplex Dojo (SN52) HuggingFace dataset of 12.5k synthetic HTML/CSS/JS interface-generation Q&A pairs (id + messages columns), used to train the subnet's DOJO-INTERFACE-CODER model; not gated. The dojo repo README (source) declares the Bittensor subnet (--netuid 52) and the tensorplex-labs HF org owns the dataset.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"ok","classification":"live","latency_ms":492,"last_ok":"2026-07-27T23:00:18.289Z","last_checked":"2026-07-27T23:00:18.289Z","stale":false,"observed_by":"live-cron-prober"},"kind":"data-artifact","provider":"tensorplex","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://huggingface.co/datasets/tensorplex-labs/Dojo-Synthetic-SFT'","python":"import requests\n\nresp = requests.get(\"https://huggingface.co/datasets/tensorplex-labs/Dojo-Synthetic-SFT\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://huggingface.co/datasets/tensorplex-labs/Dojo-Synthetic-SFT\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-52-dojo-synthetic-sft-dataset"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.taomarketcap.com/public/v1/subnets/52/","capability":"Dojo TaoMarketCap subnet snapshot API","description":"Public no-auth GET /public/v1/subnets/52/ on api.taomarketcap.com returning machine-readable JSON for SN52 Dojo on-chain subnet state, SubnetIdentitiesV3 metadata, economics, and dTAO market fields. This indexed feed is documented in the TaoMarketCap developer API. TaoMarketCap now enforces a trailing slash (the non-slash path 301s); tracked URL updated to the canonical non-redirecting form. Rejects HEAD (405); probe uses GET.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-52-taomarketcap-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.taomarketcap.com/public/v1/subnets/52/"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-52-taomarketcap-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":167,"last_ok":"2026-07-27T23:00:18.289Z","last_checked":"2026-07-27T23:00:18.289Z","stale":false,"observed_by":"live-cron-prober"},"kind":"subnet-api","provider":"taomarketcap","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://api.taomarketcap.com/public/v1/subnets/52/'","python":"import requests\n\nresp = requests.get(\"https://api.taomarketcap.com/public/v1/subnets/52/\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.taomarketcap.com/public/v1/subnets/52/\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-52-taomarketcap-subnet-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json","capability":"Dojo Worker API OpenAPI spec","description":"Swagger 2.0 spec (20 paths) for the Dojo Worker API, committed in the official tensorplex-labs/dojo-worker-api repository at docs/swagger.json and served here via the jsDelivr view of that exact repo file (raw.githubusercontent.com serves it as text/plain, which machine-readable validation rejects). The previously hosted API base https://dojo.network/api/v1 (the TASK_API_URL default in tensorplex-labs/dojo internal/config/env.go) currently 301-redirects every path to the GitHub repo, so the committed spec is the subnet's only live machine-readable API description.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-52-tensorplex-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json"},"response":{"content_type":"application/json; charset=utf-8","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-52-tensorplex-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"openapi","provider":"tensorplex","schema_artifact":"/metagraph/schemas/sn-52-tensorplex-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-52-tensorplex-openapi.json","hash":"01b20e6910f9c574667d3a9be213c327fdd4eac68581345c0deb3255abb368e0","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-52-tensorplex-openapi","url":"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json"},"schema_status":"machine-readable","schema_url":"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json","snippets":{"curl":"curl -sS 'https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json'","python":"import requests\n\nresp = requests.get(\"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://cdn.jsdelivr.net/gh/tensorplex-labs/dojo-worker-api@main/docs/swagger.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-52-tensorplex-openapi"}],"slug":"sn-52","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/52.json","cache":"standard","contract_version":"2026-07-03.2","generated_at":"2026-07-27T10:51:25.049Z","published_at":"2026-07-27T10:51:25.049Z","source":"live-cron-prober","operational_observed_at":"2026-07-27T23:00:18.289Z"}}