{"ok":true,"schema_version":1,"data":{"agent_readiness":{"blocker_level":"missing-data","blockers":[{"code":"unclear-auth","field":"auth","message":"Callable services exist, but auth requirements are not fully machine-readable.","next_action":"Declare auth_required/auth_schemes or capture auth metadata from the service schema.","severity":"missing-data"},{"code":"missing-docs","field":"docs_url","message":"No public documentation link is recorded.","next_action":"Add an official docs URL or document that no public docs exist.","severity":"missing-data"}],"missing_fields":["auth","docs_url"],"status":"callable"},"categories":["advertising","baseline-augmented","baseline-curated","identity-reviewed","official-source-repo","official-website"],"completeness_score":93,"contract_version":"2026-07-03.2","example_count":0,"examples":[],"generated_at":"2026-07-27T10:51:25.049Z","integration_readiness":93,"name":"AdTAO","netuid":21,"readiness":{"components":{"active_lifecycle":true,"auth_clarity":false,"callable_now":true,"documented":true,"has_callable_api":true,"has_candidate_api":true,"has_public_docs":false,"has_source_repo":true,"profile_complete":true},"readiness_tier":"buildable","readiness_version":2,"score":93,"readiness_verified":true},"schema_version":1,"service_count":14,"services":[{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes/%7Bepisode_id%7D","capability":"AdTAO epoch episode detail","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /v1/epochs/{epoch_id}/episodes/{episode_id} returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes/%7Bepisode_id%7D' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes/%7Bepisode_id%7D\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes/%7Bepisode_id%7D\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-episode-detail"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes","capability":"AdTAO epoch episodes","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /v1/epochs/{epoch_id}/episodes returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-episodes"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes_batch","capability":"AdTAO epoch episodes batch","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /v1/epochs/{epoch_id}/episodes_batch returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes_batch' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes_batch\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episodes_batch\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-episodes-batch"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/commitment","capability":"AdTAO epoch commitment","description":"Public no-auth per-epoch commitment read, taking an {epoch_id} path parameter. Live-verified 2026-07-21 with epoch_id=1: HTTP 404 {\"detail\":\"Epoch 1 not found\"} — a genuine epoch lookup, no auth gate. Probe disabled (needs a real epoch id).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/commitment'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/commitment\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/commitment\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-epoch-commitment"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episode-commitment","capability":"AdTAO epoch episode-commitment","description":"Public no-auth per-epoch episode-commitment read, taking an {epoch_id} path parameter. Live-verified 2026-07-21 with epoch_id=1: HTTP 404 {\"detail\":\"Epoch 1 not found\"} — a genuine epoch lookup, no auth gate. Probe disabled (needs a real epoch id).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episode-commitment'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episode-commitment\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/episode-commitment\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-epoch-episode-commitment"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/scores","capability":"AdTAO epoch scores (retired redirect)","description":"Documented-but-retired per-epoch scores read. Still declared in the registered schema and unauthenticated, but live-verified 2026-07-21 as functionally retired: HTTP 501 {\"detail\":\"GET /1/scores is no longer served via this API under the two-binary validator architecture. Use GET /1/verification for the chain-derived scoring commitment...\"}. Registered because it is real, documented surface, explicitly flagged here as a dead-end redirect rather than active data. Probe disabled.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/scores'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/scores\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/scores\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-epoch-scores"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/verification","capability":"AdTAO epoch verification","description":"Public no-auth chain-derived scoring-commitment read for one epoch, taking an {epoch_id} path parameter. Live-verified 2026-07-21 with epoch_id=1: HTTP 409 {\"detail\":\"9.C.2 post-scoring artifact for epoch_id=1 is not yet visible in RevealedCommitments for this validator ...\"} — a real epoch-state explanation, not an auth error. Path parameter in percent-encoded brace form; probe disabled (needs a real epoch id).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/verification'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/verification\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/verification\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-epoch-verification"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/my-predictions","capability":"AdTAO epoch miner predictions","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /v1/epochs/{epoch_id}/my-predictions returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/my-predictions' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/my-predictions\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/epochs/%7Bepoch_id%7D/my-predictions\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-my-predictions"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/v1/registration-status","capability":"AdTAO miner registration status","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /v1/registration-status returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/v1/registration-status' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/v1/registration-status\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/v1/registration-status\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-registration-status"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://raw.githubusercontent.com/ippcteam/SN21-adtao/main/data/training/training_episodes.json","capability":"AdTAO training episodes sample dataset","description":"Public no-auth JSON dataset of bundled sample prediction episodes (account state, action context, and known outcomes) published in the official SN21 AdTAO source repository at data/training/. Documented in the repo README as the bundled sample data (10 episodes with known outcomes) and consumed by scripts/train_example_model.py for local baseline-model training.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"non-json response","status":"capture-failed"},"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":"data-artifact","provider":"adtao","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://raw.githubusercontent.com/ippcteam/SN21-adtao/main/data/training/training_episodes.json'","python":"import requests\n\nresp = requests.get(\"https://raw.githubusercontent.com/ippcteam/SN21-adtao/main/data/training/training_episodes.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://raw.githubusercontent.com/ippcteam/SN21-adtao/main/data/training/training_episodes.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-training-episodes"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/training/episodes","capability":"AdTAO training episodes feed","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /training/episodes returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests). Accepts page / page_size query parameters; registered with the fixed base URL, no query baked in.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/training/episodes' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/training/episodes\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/training/episodes\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-training-episodes-api"},{"auth":{"location":"header","names":["X-Miner-Hotkey","X-Miner-Nonce","X-Miner-Signature"],"scheme":"signature","scopes_note":"Requires a hotkey-signed request: the X-Miner-Hotkey, X-Miner-Nonce, and X-Miner-Signature headers proving control of a registered hotkey (declared in the subnet's own OpenAPI spec; live-verified 2026-07-22 -- an unauthenticated request's HTTP 422 names X-Miner-Hotkey as missing). No bearer token or API key is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/training/summary","capability":"AdTAO training summary","description":"Per-miner validator read. The registered schema declares no security block for this operation, but live-verified 2026-07-21: an unauthenticated GET /training/summary returns HTTP 422 naming a required per-miner identity request header (`X-Miner-` prefix) as missing, so it is gated in practice. Registered auth_required:true with probe disabled (not anonymously callable, unlike what the bare schema suggests).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/training/summary' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/training/summary\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/training/summary\", {\n  headers: { \"Authorization\": \"Bearer YOUR_API_KEY\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-training-summary"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/health","capability":"AdTAO SN21 Validator API","description":"Official public AdTAO (SN21) validator API on the operator's validator.adtao.io host. An unauthenticated GET on /health returns live JSON service status (service, current epoch label, episodes loaded, submission window, deadline). The /v1/epochs routes are described in the linked OpenAPI schema. Live-verified 2026-07-22: HTTP 200 JSON status=ok for sn21-validator health.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-21-adtao-validator-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://validator.adtao.io/health"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-21-adtao-validator-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":594,"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":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"schema-url","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/health'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/health\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/health\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-validator-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://validator.adtao.io/openapi.json","capability":"AdTAO SN21 Validator OpenAPI schema","description":"Machine-readable OpenAPI 3.1.0 schema (title \"SN21 Validator\", version 0.1.0) served by the official AdTAO validator API on the operator's validator.adtao.io host. Documents the public epoch/episode, prediction, commitment, verification, scores, and training routes plus /health. Unauthenticated GET returns the full paths object. Live-verified 2026-07-22: GET returns OpenAPI 3.1.0 JSON (title SN21 Validator).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-21-adtao-validator-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://validator.adtao.io/openapi.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-21-adtao-validator-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":"adtao","schema_artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-21-adtao-validator-openapi.json","hash":"7b222bfc845bb7b441f3493ab957906fe684e5e74769cd61f02fe194bb599416","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-21-adtao-validator-openapi","url":"https://validator.adtao.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://validator.adtao.io/openapi.json","snippets":{"curl":"curl -sS 'https://validator.adtao.io/openapi.json'","python":"import requests\n\nresp = requests.get(\"https://validator.adtao.io/openapi.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://validator.adtao.io/openapi.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-21-adtao-validator-openapi"}],"slug":"sn-21","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/21.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"}}