{"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":["baseline-augmented","baseline-curated","identity-reviewed","macrocosmos","official-dashboard","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":"iota","netuid":9,"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":19,"services":[{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://huggingface.co/datasets/macrocosm-os/code-parrot-github-code","capability":"IOTA code pretraining dataset","description":"Public Macrocosmos HuggingFace GitHub-code corpus (repo_name/path/size/content/license columns; 32 languages) in the macrocosm-os org, a pretraining-data source fit for the IOTA (SN9) LLM-pretraining subnet; not gated. The IOTA repo README (source) declares Macrocosmos operates subnet 9 and links docs.macrocosmos.ai/subnets/subnet-9-pre-training.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"non-json response","status":"capture-failed"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"data-artifact","provider":"macrocosmos","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://huggingface.co/datasets/macrocosm-os/code-parrot-github-code'","python":"import requests\n\nresp = requests.get(\"https://huggingface.co/datasets/macrocosm-os/code-parrot-github-code\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://huggingface.co/datasets/macrocosm-os/code-parrot-github-code\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-codeparrot-dataset"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/common/get_merged_partitions","capability":"IOTA common merged partitions read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/common/get_merged_partitions' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/common/get_merged_partitions\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/common/get_merged_partitions\", {\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-9-iota-common-get-merged-partitions"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/common/get_run_epoch","capability":"IOTA common run epoch read","description":"Epistula-signed orchestrator read requiring a run_id query parameter. Live-verified 2026-07-21: unsigned GET without run_id returns HTTP 422 Field required for query.run_id. Registered with the fixed base URL (no query baked in) so call_subnet_surface can supply query params. auth_required:true, probe.enabled:false.","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/common/get_run_epoch' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/common/get_run_epoch\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/common/get_run_epoch\", {\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-9-iota-common-get-run-epoch"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/healthcheck","capability":"IOTA orchestrator healthcheck","description":"Public no-auth GET /healthcheck on the IOTA SN9 orchestrator returning liveness JSON (observed: {\"status\":\"healthy\"}); documented as GET /healthcheck in the subnet OpenAPI spec. Live-verified 2026-07-21: HTTP 200 JSON {\"status\":\"healthy\"}.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-9-iota-healthcheck.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://iota.api.macrocosmos.ai/healthcheck"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-9-iota-healthcheck.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":210,"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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/healthcheck'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/healthcheck\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/healthcheck\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-healthcheck"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://iota.api.macrocosmos.ai/metrics","capability":"IOTA orchestrator Prometheus metrics","description":"Public no-auth GET returning Prometheus text-exposition-format process/runtime metrics (python_gc_objects_collected_total and similar). Documented in the subnet's own OpenAPI schema (path /metrics); plain-text response, not JSON, so tracked with expect: any. Same pattern as the SN1 Apex orchestrator's own /metrics surface (same macrocosm-os org).","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":237,"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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/metrics'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/metrics\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/metrics\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-metrics"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/all_layers_training","capability":"IOTA miner all layers training read","description":"Epistula-signed orchestrator read declared in the registered OpenAPI schema (metagraphed#7025). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError on the live orchestrator; some load-balanced backends may instead return HTTP 404. Registered with probe.enabled:false so intermittent 404s are not misreported as subnet health.","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/all_layers_training' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/all_layers_training\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/all_layers_training\", {\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-9-iota-miner-all-layers-training"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/get_activations","capability":"IOTA miner activations read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex, shared macrocosm-os codebase). Live-verified 2026-07-21: unsigned GET returns HTTP 422 listing the required request body, proving the route is real. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/get_activations' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/get_activations\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/get_activations\", {\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-9-iota-miner-get-activations"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/get_layer_optimizer_state","capability":"IOTA miner layer optimizer state read","description":"Epistula-signed orchestrator read declared in the registered OpenAPI schema (metagraphed#7025). Same load-balancer caveat as /miner/all_layers_training: live responses may be HTTP 400 EpistulaError or HTTP 404 depending on backend. Registered auth_required:true with probe.enabled:false.","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/get_layer_optimizer_state' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/get_layer_optimizer_state\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/get_layer_optimizer_state\", {\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-9-iota-miner-get-layer-optimizer-state"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/get_partitions","capability":"IOTA miner partitions read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/get_partitions' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/get_partitions\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/get_partitions\", {\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-9-iota-miner-get-partitions"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/get_previous_partitions","capability":"IOTA miner previous partitions read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 422 listing the required request body. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/get_previous_partitions' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/get_previous_partitions\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/get_previous_partitions\", {\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-9-iota-miner-get-previous-partitions"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/get_weight_path_per_layer","capability":"IOTA miner weight path per layer read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/get_weight_path_per_layer' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/get_weight_path_per_layer\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/get_weight_path_per_layer\", {\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-9-iota-miner-get-weight-path-per-layer"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/heartbeat","capability":"IOTA miner heartbeat read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address, proving signature auth is enforced. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/heartbeat' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/heartbeat\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/heartbeat\", {\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-9-iota-miner-heartbeat"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/layer_state","capability":"IOTA miner layer state read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/layer_state' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/layer_state\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/layer_state\", {\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-9-iota-miner-layer-state"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/notify_orchestrator_of_state_call","capability":"IOTA miner notify orchestrator of state call read","description":"Epistula-signed orchestrator read declared in the registered OpenAPI schema (metagraphed#7025). Same load-balancer caveat as /miner/all_layers_training: live responses may be HTTP 400 EpistulaError or HTTP 404 depending on backend. Registered auth_required:true with probe.enabled:false.","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/notify_orchestrator_of_state_call' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/notify_orchestrator_of_state_call\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/notify_orchestrator_of_state_call\", {\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-9-iota-miner-notify-orchestrator-of-state-call"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/miner/register/status/%7Bqueue_id%7D","capability":"IOTA miner register status read","description":"Epistula-signed orchestrator read with a path-parameterized queue_id. Live-verified 2026-07-21: GET with a placeholder queue id returns HTTP 400 EpistulaError Invalid SS58 address. Path template registered URI-encoded (%7Bqueue_id%7D). auth_required:true, probe.enabled:false.","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/miner/register/status/%7Bqueue_id%7D' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/miner/register/status/%7Bqueue_id%7D\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/miner/register/status/%7Bqueue_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-9-iota-miner-register-status-queue-id"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/openapi.json","capability":"IOTA orchestrator API OpenAPI schema","description":"Machine-readable OpenAPI 3.1 schema (title: FastAPI) for the IOTA SN9 orchestrator, served publicly at iota.api.macrocosmos.ai — documents the miner registration/activation/weight-submission routes and GET /healthcheck. The SN9 companion to the merged SN1 apex.api.macrocosmos.ai orchestrator API; Macrocosmos operates subnet 9 per the official IOTA source repo. Live-verified 2026-07-21: GET returns OpenAPI 3.1.0 JSON (title FastAPI).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-9-iota-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://iota.api.macrocosmos.ai/openapi.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-9-iota-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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/openapi.json'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/openapi.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/openapi.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-openapi"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/profiler/status","capability":"IOTA orchestrator profiler status","description":"Public no-auth GET /profiler/status on the IOTA SN9 orchestrator returning profiler state JSON. Live-verified 2026-07-21: HTTP 200 {\"running\":false,\"profiler_exists\":false}. Unlike /profiler/start and /profiler/stop write siblings, this read declares no signed-request headers in the registered OpenAPI schema and needs none.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-9-iota-profiler-status.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://iota.api.macrocosmos.ai/profiler/status"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-9-iota-profiler-status.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":150,"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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/profiler/status'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/profiler/status\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/profiler/status\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-profiler-status"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://iota.api.macrocosmos.ai/common/get_run_info","capability":"IOTA training run info","description":"Public no-auth GET /common/get_run_info on the IOTA orchestrator, returning the current decentralized pre-training run's configuration (run_id, num_miners, incentive_perc, run_flags) with no parameters required. Distinct from /common/get_run_epoch, which needs a specific run_id and is not tracked here since the current run_id changes over time (this endpoint is how a client discovers it).","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-9-iota-run-info.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://iota.api.macrocosmos.ai/common/get_run_info"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-9-iota-run-info.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":318,"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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/common/get_run_info'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/common/get_run_info\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/common/get_run_info\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-9-iota-run-info"},{"auth":{"location":"header","names":["Epistula-Timestamp","Epistula-Signed-By","Epistula-Request-Signature"],"scheme":"signature","scopes_note":"Requires an Epistula-protocol signed request: the Epistula-Timestamp, Epistula-Signed-By, and Epistula-Request-Signature headers proving control of a registered hotkey (live-verified 2026-07-22: the API's own EpistulaError messages progress through SS58-format, timestamp-freshness, and signature-hex-format checks as each header is supplied correctly). No static API key or bearer token is accepted."},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://iota.api.macrocosmos.ai/validator/get_validator_code","capability":"IOTA validator code read","description":"Epistula-signed orchestrator read on api.macrocosmos.ai (same non-bearer signing caveat as SN1 Apex). Live-verified 2026-07-21: unsigned GET returns HTTP 400 EpistulaError Invalid SS58 address. Registered auth_required:true with probe.enabled:false (Phase 3).","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":"macrocosmos","schema_artifact":"/metagraph/schemas/sn-9-iota-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-9-iota-openapi.json","hash":"2a686f76de1787d476f2b0d9d93ea18c1c16961f90305b0510e1ecca19b845fb","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-9-iota-openapi","url":"https://iota.api.macrocosmos.ai/openapi.json"},"schema_status":"machine-readable","schema_url":"https://iota.api.macrocosmos.ai/openapi.json","snippets":{"curl":"curl -sS 'https://iota.api.macrocosmos.ai/validator/get_validator_code' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'","python":"import requests\n\nresp = requests.get(\"https://iota.api.macrocosmos.ai/validator/get_validator_code\", headers={\"Authorization\": \"Bearer YOUR_API_KEY\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://iota.api.macrocosmos.ai/validator/get_validator_code\", {\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-9-iota-validator-get-validator-code"}],"slug":"sn-9","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/9.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"}}