{"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","verifiable-oracles","zkml"],"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":"DSperse","netuid":2,"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":14,"services":[{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/circuits/%7Bid%7D","capability":"DSperse circuit repository circuit detail","description":"Public no-auth GET returning a single registered circuit's metadata record by repository id; path-parameterized sibling of the already-tracked circuit list on the same host. Documented in the circuit repository's own OpenAPI 3.1 schema (path /circuits/{id}) with no security declared. Live-verified 2026-07-22: a placeholder path value returns a clean HTTP 400 JSON validation error naming the id path field (the circuit collection is currently empty, so no stored record id exists to fetch); the confirmed-live collection root is served by the same routing layer. probe.enabled:false -- percent-encoded path template, no stable canonical id to probe.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/circuits/%7Bid%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/circuits/%7Bid%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/circuits/%7Bid%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-detail"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/circuits/%7Bid%7D/download","capability":"DSperse circuit repository circuit artifact download","description":"Public no-auth GET streaming a registered circuit's packaged artifact by repository id. Documented in the circuit repository's own OpenAPI 3.1 schema (path /circuits/{id}/download) with no security declared. Live-verified 2026-07-22: a placeholder path value returns a clean HTTP 400 JSON validation error naming the id path field (circuit collection currently empty; the equivalent component file route on this host serves real bytes -- see sn-2-dsperse-component-file-by-name). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/circuits/%7Bid%7D/download'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/circuits/%7Bid%7D/download\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/circuits/%7Bid%7D/download\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-download"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/circuits/files/%7BcircuitId%7D/%7Bfilename%7D","capability":"DSperse circuit repository circuit file by name","description":"Public no-auth GET returning a named file within a registered circuit. Documented in the circuit repository's own OpenAPI 3.1 schema (path /circuits/files/{circuitId}/{filename}) with no security declared. Live-verified 2026-07-22: placeholder path values return a clean HTTP 400 JSON validation error naming the circuitId path field (circuit collection currently empty). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/circuits/files/%7BcircuitId%7D/%7Bfilename%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/circuits/files/%7BcircuitId%7D/%7Bfilename%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/circuits/files/%7BcircuitId%7D/%7Bfilename%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-file-by-name"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/circuits","capability":"DSperse circuit repository circuit list","description":"Public no-auth GET returning the list of registered ZK circuits (observed: {\"circuits\":[]} when empty). Documented in the circuit repository's own OpenAPI schema (path /circuits); same host as the already-tracked openapi surface.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-2-dsperse-circuit-list.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://repository.inferencelabs.com/circuits"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-2-dsperse-circuit-list.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":149,"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":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/circuits'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/circuits\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/circuits\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-list"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/circuits/%7Bid%7D/metrics","capability":"DSperse circuit repository circuit metrics","description":"Public no-auth GET returning a registered circuit's usage metrics by repository id. Documented in the circuit repository's own OpenAPI 3.1 schema (path /circuits/{id}/metrics); the GET read declares no security. The same path also accepts POST metric submissions, which the schema marks as protected (security: true) -- one URL registers once, so this entry tracks the public GET read and notes the write route here (observed 2026-07-22: a bare POST returns HTTP 503 'Metrics submission not configured'). Live-verified 2026-07-22: a placeholder path value on the GET returns a clean HTTP 400 JSON validation error naming the id path field. probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/circuits/%7Bid%7D/metrics'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/circuits/%7Bid%7D/metrics\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/circuits/%7Bid%7D/metrics\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-metrics"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/openapi.json","capability":"DSperse circuit repository OpenAPI","description":"Public no-auth OpenAPI 3.1 schema for the SN2 circuit repository API (title \"Circuit Repository API\", 11 paths) on repository.inferencelabs.com. Validators and miners fetch active ZK circuits from this host; the official subnet-2 client sets CIRCUIT_API_URL to https://repository.inferencelabs.com in crates/sn2-types/src/constants.rs.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-2-dsperse-circuit-repository-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://repository.inferencelabs.com/openapi.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-2-dsperse-circuit-repository-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":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/openapi.json'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/openapi.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/openapi.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-circuit-repository-openapi"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/components/%7Bsha256%7D","capability":"DSperse circuit repository component detail","description":"Public no-auth GET returning a single circuit component's metadata record by its content digest; path-parameterized sibling of the already-tracked component list. Documented in the circuit repository's own OpenAPI 3.1 schema (path /components/{sha256}) with no security declared. Live-verified 2026-07-22: a real digest taken from the live component list returns HTTP 200 application/json with the matching component record (name, proof_system, file listing). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/components/%7Bsha256%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/components/%7Bsha256%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/components/%7Bsha256%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-component-detail"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/components/%7Bsha256%7D/files/%7Bfilename%7D","capability":"DSperse circuit repository component file by name","description":"Public no-auth GET returning a named file within a circuit component, addressed by the component's content digest. Documented in the circuit repository's own OpenAPI 3.1 schema (path /components/{sha256}/files/{filename}) with no security declared. Live-verified 2026-07-22: a real digest and filename taken from the live component list return HTTP 200 application/octet-stream with the file bytes (circuit.bin, ~6.7 MB). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/components/%7Bsha256%7D/files/%7Bfilename%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/components/%7Bsha256%7D/files/%7Bfilename%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/components/%7Bsha256%7D/files/%7Bfilename%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-component-file-by-name"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/components","capability":"DSperse circuit repository component list","description":"Public no-auth GET returning registered circuit components (sha256, name, proof_system, file URLs). Documented in the circuit repository's own OpenAPI schema (path /components); same host as the already-tracked openapi surface.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"response exceeds byte limit","status":"capture-failed"},"health":{"status":"ok","classification":"live","latency_ms":605,"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":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/components'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/components\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/components\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-component-list"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/models/%7Bid%7D","capability":"DSperse circuit repository model detail","description":"Public no-auth GET returning a single registered model's metadata and composition record by repository id; path-parameterized sibling of the already-tracked model list. Documented in the circuit repository's own OpenAPI 3.1 schema (path /models/{id}) with no security declared. Live-verified 2026-07-22: a real id taken from the live model list returns HTTP 200 application/json with the matching model record (metadata, composition, component slices). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/models/%7Bid%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/models/%7Bid%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/models/%7Bid%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-model-detail"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/models","capability":"DSperse circuit repository model list","description":"Public no-auth GET returning registered ML models (id, name, author, version, input/output schema). Documented in the circuit repository's own OpenAPI schema (path /models); same host as the already-tracked openapi surface.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"response exceeds byte limit","status":"capture-failed"},"health":{"status":"ok","classification":"live","latency_ms":948,"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":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/models'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/models\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/models\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-model-list"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://repository.inferencelabs.com/models/wb/%7Bsha256%7D","capability":"DSperse circuit repository model weights by digest","description":"Public no-auth GET streaming a model weights artifact addressed by its content digest. Documented in the circuit repository's own OpenAPI 3.1 schema (path /models/wb/{sha256}) with no security declared. Live-verified 2026-07-22: a real artifact digest taken from a live model record's composition returns HTTP 200 application/octet-stream streaming the weights file (~109 MB, transfer confirmed in progress and cut off locally). probe.enabled:false -- percent-encoded path template.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"inference-labs","schema_artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-2-dsperse-circuit-repository-openapi.json","hash":"84cee89a1b9786d82be128bcb4b93659a2048a11414e22435537703bb7de3d10","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-2-dsperse-circuit-repository-openapi","url":"https://repository.inferencelabs.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://repository.inferencelabs.com/openapi.json","snippets":{"curl":"curl -sS 'https://repository.inferencelabs.com/models/wb/%7Bsha256%7D'","python":"import requests\n\nresp = requests.get(\"https://repository.inferencelabs.com/models/wb/%7Bsha256%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://repository.inferencelabs.com/models/wb/%7Bsha256%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-dsperse-model-weights-by-digest"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://sn2-api.inferencelabs.com/stats","capability":"DSperse network stats API","description":"Public no-auth GET /stats on sn2-api.inferencelabs.com returning JSON network counters (observed: total_proofs, unique_miners, unique_validators). The official subnet-2 validator client sets DEFAULT_API_URL to https://sn2-api.inferencelabs.com on the same host. Live-verified 2026-07-21: GET https://sn2-api.inferencelabs.com/stats -> HTTP 200 application/json (total_proofs, unique_miners, unique_validators).","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-2-inference-labs-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://sn2-api.inferencelabs.com/stats"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-2-inference-labs-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1051,"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":"inference-labs","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://sn2-api.inferencelabs.com/stats'","python":"import requests\n\nresp = requests.get(\"https://sn2-api.inferencelabs.com/stats\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://sn2-api.inferencelabs.com/stats\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-inference-labs-subnet-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://huggingface.co/datasets/inferencelabs/TruthTensor","capability":"Inference Labs TruthTensor benchmark dataset","description":"Public Inference Labs HuggingFace TruthTensor benchmark — ~88k text/parquet rows of per-run LLM decision-execution logs (model, latency/duration, token counts, action, reasoning columns) measuring instruction divergence; not gated. Published by inferencelabs, the HF-verified org of Inference Labs, the DSperse (SN2) operator (its site subnet2.inferencelabs.com and X @inference_labs are the subnet's registered surfaces).","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":"inference-labs","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://huggingface.co/datasets/inferencelabs/TruthTensor'","python":"import requests\n\nresp = requests.get(\"https://huggingface.co/datasets/inferencelabs/TruthTensor\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://huggingface.co/datasets/inferencelabs/TruthTensor\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-2-truthtensor-benchmark-dataset"}],"slug":"dsperse","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/2.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"}}