{"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"],"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":"blockmachine","netuid":19,"readiness":{"components":{"active_lifecycle":true,"auth_clarity":true,"callable_now":true,"documented":true,"has_callable_api":true,"has_candidate_api":true,"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":27,"services":[{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/bans","capability":"BlockMachine bans","description":"List Bans operation on the BlockMachine API (GET, POST /bans), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is registered auth_required:true with probe.enabled:false (Phase 3). Live-verified 2026-07-21: an unauthenticated GET returns HTTP 401 {\"detail\":\"Not authenticated\"}, confirming the gate.","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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/bans' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/bans\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/bans\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-bans"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/bans/%7Bcoldkey%7D","capability":"BlockMachine bans on-chain account","description":"Unban Miner operation on the BlockMachine API (DELETE, GET /bans/{on-chain account}), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/bans/%7Bcoldkey%7D' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/bans/%7Bcoldkey%7D\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/bans/%7Bcoldkey%7D\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-bans-on-chain-account"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/bans/proxy-detection","capability":"BlockMachine bans proxy detection","description":"Ban Proxy Detected Miner operation on the BlockMachine API (POST /bans/proxy-detection), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares no security on it; it is a state-changing operation and not probe-safe, so the probe is disabled and no auth requirement is asserted without evidence.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/bans/proxy-detection' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/bans/proxy-detection\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/bans/proxy-detection\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-bans-proxy-detection"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/base-incentive/candidates","capability":"BlockMachine base incentive candidates","description":"Get Base Incentive Candidates operation on the BlockMachine API (GET /base-incentive/candidates), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares no security on it; it is a state-changing operation and not probe-safe, so the probe is disabled and no auth requirement is asserted without evidence.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/base-incentive/candidates' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/base-incentive/candidates\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/base-incentive/candidates\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-base-incentive-candidates"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/base-incentive/eligible","capability":"BlockMachine base incentive eligible","description":"Get Base Incentive Eligible operation on the BlockMachine API (GET /base-incentive/eligible), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares no security on it; it is a state-changing operation and not probe-safe, so the probe is disabled and no auth requirement is asserted without evidence.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/base-incentive/eligible' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/base-incentive/eligible\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/base-incentive/eligible\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-base-incentive-eligible"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/base-incentive/ledger","capability":"BlockMachine base incentive ledger","description":"Get Base Incentive Ledger operation on the BlockMachine API (GET, POST /base-incentive/ledger), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. Live-checked 2026-07-21: the bare URL returns HTTP 422 naming query parameter \"epoch_id\" as required, so it is a query-param route -- the fixed base URL is registered with the probe disabled and it is callable via call_subnet_surface's query argument.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/base-incentive/ledger' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/base-incentive/ledger\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/base-incentive/ledger\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-base-incentive-ledger"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/benchmarks","capability":"BlockMachine benchmarks","description":"Get Benchmarks operation on the BlockMachine API (GET, POST /benchmarks), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares no security on it; it is a state-changing operation and not probe-safe, so the probe is disabled and no auth requirement is asserted without evidence.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/benchmarks' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/benchmarks\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/benchmarks\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-benchmarks"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/compatibility/policy","capability":"BlockMachine compatibility policy","description":"Get Policy operation on the BlockMachine API (GET /compatibility/policy), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/compatibility/policy' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/compatibility/policy\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/compatibility/policy\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-compatibility-policy"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.blockmachine.io/epochs/latest-finalized","capability":"BlockMachine finalized-epoch snapshot","description":"Public no-auth GET returning the latest finalized epoch (id, number, participating gateway_ids, per-gateway manifest). Documented in the subnet's own OpenAPI schema.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-data-artifact.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/epochs/latest-finalized"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-data-artifact.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":66,"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":"blockmachine","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs/latest-finalized'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs/latest-finalized\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs/latest-finalized\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-data-artifact"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.blockmachine.io/epochs/current","capability":"BlockMachine current-epoch snapshot","description":"Public no-auth GET returning the current epoch (epoch_id, current_block, observed_at). Documented in the subnet's own OpenAPI schema.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-data-artifact-api-blockmachine-io.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/epochs/current"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-data-artifact-api-blockmachine-io.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":70,"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":"blockmachine","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs/current'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs/current\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs/current\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-data-artifact-api-blockmachine-io"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.blockmachine.io/epochs","capability":"BlockMachine epochs catalog","description":"Public no-auth BlockMachine epochs listing — every epoch's id/number, participating gateway_ids, and per-gateway manifest (request log files + finalized CU-allocation objects). The full-history catalog behind the already-registered latest-finalized/current single-epoch endpoints; declared as GET /epochs (\"List Epochs\") in the operator's OpenAPI (source).","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-epochs-catalog.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/epochs"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-epochs-catalog.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":76,"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":"blockmachine","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-epochs-catalog"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/epochs/%7Bepoch_id%7D","capability":"BlockMachine epochs epoch id","description":"Get Epoch operation on the BlockMachine API (GET /epochs/{epoch_id}), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. Path-parameterized, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs/%7Bepoch_id%7D' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-epochs-epoch-id"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/finalize","capability":"BlockMachine epochs epoch id finalize","description":"Finalize Epoch operation on the BlockMachine API (POST /epochs/{epoch_id}/finalize), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. Path-parameterized, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs/%7Bepoch_id%7D/finalize' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/finalize\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/finalize\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-epochs-epoch-id-finalize"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/free-tier-incentive","capability":"BlockMachine epochs epoch id free tier incentive","description":"Report Free Tier Incentive operation on the BlockMachine API (POST /epochs/{epoch_id}/free-tier-incentive), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. Path-parameterized, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/epochs/%7Bepoch_id%7D/free-tier-incentive' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/free-tier-incentive\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/epochs/%7Bepoch_id%7D/free-tier-incentive\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-epochs-epoch-id-free-tier-incentive"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/health","capability":"BlockMachine API health","description":"Public no-auth GET /health returning BlockMachine API status and version. Documented in the subnet's OpenAPI spec on the same host as the existing leaderboard and epoch snapshot surfaces.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-health.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/health"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-health.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":44,"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/health' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/health\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/health\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-health"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes","capability":"BlockMachine nodes","description":"List Nodes operation on the BlockMachine API (GET, POST /nodes), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is registered auth_required:true with probe.enabled:false (Phase 3). Live-verified 2026-07-21: an unauthenticated GET returns HTTP 401 {\"detail\":\"Not authenticated\"}, confirming the gate.","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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes/%7Bnode_id%7D","capability":"BlockMachine nodes node id","description":"Delete Node operation on the BlockMachine API (DELETE, GET, PATCH /nodes/{node_id}), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes/%7Bnode_id%7D' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes-node-id"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret","capability":"BlockMachine nodes node id credential","description":"Get credential Metadata operation on the BlockMachine API (GET, POST /nodes/{node_id}/credential), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes-node-id-credential"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret/promote","capability":"BlockMachine nodes node id credential promote","description":"Promote credential operation on the BlockMachine API (POST /nodes/{node_id}/credential/promote), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret/promote' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret/promote\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/secret/promote\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes-node-id-credential-promote"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes/%7Bnode_id%7D/events","capability":"BlockMachine nodes node id events","description":"List Events operation on the BlockMachine API (GET /nodes/{node_id}/events), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes/%7Bnode_id%7D/events' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/events\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/events\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes-node-id-events"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/nodes/%7Bnode_id%7D/metrics","capability":"BlockMachine nodes node id metrics","description":"Get Metrics operation on the BlockMachine API (GET /nodes/{node_id}/metrics), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/nodes/%7Bnode_id%7D/metrics' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/metrics\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/nodes/%7Bnode_id%7D/metrics\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-nodes-node-id-metrics"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/openapi.json","capability":"blockmachine community openapi","description":null,"eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/openapi.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/openapi.json' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/openapi.json\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/openapi.json\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-openapi"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/pricing/rules","capability":"BlockMachine pricing rules","description":"Delete Pricing Rule operation on the BlockMachine API (DELETE, GET, POST /pricing/rules), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is registered auth_required:true with probe.enabled:false (Phase 3). Live-verified 2026-07-21: an unauthenticated GET returns HTTP 401 {\"detail\":\"Not authenticated\"}, confirming the gate.","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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/pricing/rules' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/pricing/rules\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/pricing/rules\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-pricing-rules"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/ready","capability":"Blockmachine readiness check","description":"Public no-auth GET returning readiness status including database connectivity. Documented in the subnet's own OpenAPI schema.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-ready.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.blockmachine.io/ready"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-19-blockmachine-ready.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":44,"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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/ready' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/ready\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/ready\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-ready"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/snapshots/url","capability":"BlockMachine snapshots url","description":"Get Snapshot Url operation on the BlockMachine API (GET /snapshots/url), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is registered auth_required:true with probe.enabled:false (Phase 3). Live-verified 2026-07-21: an unauthenticated GET returns HTTP 401 {\"detail\":\"Not authenticated\"}, confirming the gate.","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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/snapshots/url' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/snapshots/url\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/snapshots/url\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-snapshots-url"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/leaderboard","capability":"BlockMachine public leaderboard API","description":"Public no-auth GET returning the BlockMachine leaderboard. Consistently slow (~17s observed across repeated live tests, TLS handshake succeeds immediately but the response body takes that long) -- timeout extended well past this file's usual 10s default so it isn't misreported unhealthy for being slow rather than down.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer","status-degraded"],"live_status":"degraded"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"degraded","classification":"timeout","latency_ms":null,"last_ok":"2026-07-27T21:45:19.530Z","last_checked":"2026-07-27T23:00:18.289Z","stale":false,"observed_by":"live-cron-prober"},"kind":"subnet-api","provider":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/leaderboard' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/leaderboard\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/leaderboard\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-subnet-api"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Derived from the subnet's own OpenAPI securitySchemes (HTTPBearer), declared per-operation.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":["http"],"authority":"community","base_url":"https://api.blockmachine.io/validator/config","capability":"BlockMachine validator config","description":"Get Validator Config operation on the BlockMachine API (GET /validator/config), declared in the subnet's own OpenAPI spec at https://api.blockmachine.io/openapi.json. The spec declares the HTTPBearer security scheme on it, so it is 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":"blockmachine","schema_artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-19-blockmachine-openapi.json","hash":"ee9d2b6f00e593b189ce382ae78e9cf7352b2fd91d9819037ef167ce3e3ac5d7","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-19-blockmachine-openapi","url":"https://api.blockmachine.io/openapi.json"},"schema_status":"machine-readable","schema_url":"https://api.blockmachine.io/openapi.json","snippets":{"curl":"curl -sS 'https://api.blockmachine.io/validator/config' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://api.blockmachine.io/validator/config\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.blockmachine.io/validator/config\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-19-blockmachine-validator-config"}],"slug":"sn-19","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/19.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"}}