{"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","official-source-repo","official-website","security"],"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":"Bitsec","netuid":60,"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":32,"services":[{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/cancel","capability":"Bitsec.ai agent job cancel","description":"POST /api/agents/{agent_id}/cancel on bitsec.ai — write endpoint cancelling an agent's active job. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so probe.enabled:false. Path-parameterized; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template.","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/cancel' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/cancel\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/cancel\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-cancel"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/detail","capability":"Bitsec.ai agent detail","description":"GET /api/agents/{agent_id}/detail on bitsec.ai, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder agent_id returns HTTP 422 int_parsing validation error (\"Input should be a valid integer\") — a clean parameter-validation rejection, not an auth gate, confirming the route is live and unauthenticated. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/detail'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/detail\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/detail\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-detail"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/known-solutions","capability":"Bitsec.ai per-agent known-solutions","description":"GET /api/agents/{agent_id}/known-solutions on bitsec.ai — per-agent sibling of the already-registered project-set-wide /api/projects/known-solutions, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder agent_id returns HTTP 422 int_parsing validation error, not an auth rejection. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/known-solutions'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/known-solutions\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/known-solutions\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-known-solutions"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/runs-export","capability":"Bitsec.ai agent runs export","description":"GET /api/agents/{agent_id}/runs-export on bitsec.ai, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder agent_id returns HTTP 422 int_parsing validation error, not an auth rejection. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/runs-export'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/runs-export\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/runs-export\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-runs-export"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/scores","capability":"Bitsec.ai agent scores","description":"GET /api/agents/{agent_id}/scores on bitsec.ai, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder agent_id returns HTTP 422 int_parsing validation error, not an auth rejection. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/scores'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/scores\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/scores\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-scores"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/%7Bagent_id%7D/screener","capability":"Bitsec.ai agent screener results","description":"GET /api/agents/{agent_id}/screener on bitsec.ai, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder agent_id returns HTTP 422 int_parsing validation error, not an auth rejection. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/%7Bagent_id%7D/screener'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/screener\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/%7Bagent_id%7D/screener\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agent-screener"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/count","capability":"Bitsec.ai agents count","description":"Public no-auth GET /api/agents/count on bitsec.ai, returning the total registered agent count (optional hotkey/project_set_id/hide_failed_screeners query filters). Documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): HTTP 200 application/json {\"total_agents\":1094}.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-count.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/agents/count"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-count.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":458,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/count'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/count\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/count\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-count"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/evaluation/","capability":"Bitsec.ai agent evaluation trigger","description":"POST /api/agents/evaluation/ on bitsec.ai — write endpoint recording an agent evaluation. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/evaluation/' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/evaluation/\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/evaluation/\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-evaluation"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/agents/evaluation-status","capability":"Bitsec.ai agent evaluation status","description":"Public no-auth GET /api/agents/evaluation-status on bitsec.ai, returning aggregate round-evaluation progress (total agents, agents pending evaluation, round-evaluated flag). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-evaluation-status.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/agents/evaluation-status"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-evaluation-status.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":379,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/evaluation-status'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/evaluation-status\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/evaluation-status\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-evaluation-status"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/execution/","capability":"Bitsec.ai agent execution trigger","description":"POST /api/agents/execution/ on bitsec.ai — write endpoint recording an agent execution. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/execution/' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/execution/\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/execution/\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-execution"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/agents/","capability":"Bitsec.ai agents list","description":"Public no-auth GET /api/agents/ on bitsec.ai, returning the full registered miner agent list (agent_id, version, hotkey, project set, evaluation status). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer","status-failed"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-list.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/agents/"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-list.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":5952,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-list"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/agents/submit/","capability":"Bitsec.ai agent submit","description":"POST /api/agents/submit/ on bitsec.ai — write endpoint for miner agent submission. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/submit/' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/submit/\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/submit/\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-submit"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/agents/top/","capability":"Bitsec.ai top agents","description":"Public no-auth GET /api/agents/top/ on bitsec.ai, returning the current top-ranked miner agents (agent_id, hotkey). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-top.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/agents/top/"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-top.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":719,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/top/'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/top/\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/top/\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-top"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/agents/top-with-burn/","capability":"Bitsec.ai top agents with burn","description":"Public no-auth GET /api/agents/top-with-burn/ on bitsec.ai, returning the top-ranked agents including burn-adjusted entries. Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints. Distinct from the top/ endpoint (excludes burn entries).","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-top-with-burn.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/agents/top-with-burn/"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-agents-top-with-burn.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1429,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/agents/top-with-burn/'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/agents/top-with-burn/\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/agents/top-with-burn/\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-agents-top-with-burn"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/projects/known-solutions","capability":"Bitsec.ai known-solutions dataset","description":"Public no-auth JSON dataset of known-vulnerability benchmark projects (GET /projects/known-solutions) used to evaluate SN60 miner agents — each entry has real codebases (repo/commit/tarball) and vulnerability findings (severity, title, description). Documented in the subnet's own OpenAPI spec (already the registered schema_url) as \"Get Current Project Set Known Solutions\". Served on the official bitsec.ai domain.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-known-solutions.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/projects/known-solutions"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-known-solutions.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1358,"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":"bitsec-ai","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://bitsec.ai/api/projects/known-solutions'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/projects/known-solutions\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/projects/known-solutions\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-ai-known-solutions"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/openapi.json","capability":"Bitsec.ai FastAPI","description":"Machine-readable OpenAPI 3.1 spec (FastAPI, 30 paths) for the SN60 Bitsec.ai public API, also rendered as live Swagger UI (/api/docs) and ReDoc (/api/redoc). Served on the official bitsec.ai domain referenced by the subnet's repo README.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/openapi.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/openapi.json'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/openapi.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/openapi.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-ai-openapi"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/analytics","capability":"Bitsec.ai subnet-api","description":"Public no-auth JSON endpoint of the SN60 Bitsec.ai API (live subnet analytics: rounds, emissions). Sibling endpoints include /api/agents/top/; the full contract is the openapi surface. Served on the official bitsec.ai domain.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/analytics"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-ai-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1128,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/analytics'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/analytics\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/analytics\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-ai-subnet-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/analytics/validators","capability":"Bitsec.ai validator analytics","description":"Public no-auth GET /api/analytics/validators on bitsec.ai, returning per-validator run statistics (pending agent counts, average completed/agent run seconds) for the active project set. Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-analytics-validators.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/analytics/validators"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-analytics-validators.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":264,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/analytics/validators'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/analytics/validators\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/analytics/validators\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-analytics-validators"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/jobs/leaderboard","capability":"Bitsec.ai jobs leaderboard","description":"Public no-auth GET /api/jobs/leaderboard on bitsec.ai, returning per-agent scoring records (user, agent, score, completed validator count, hotkey). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/jobs/leaderboard"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1267,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/leaderboard'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/leaderboard\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/leaderboard\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-leaderboard"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/leaderboard_old","capability":"Bitsec.ai legacy jobs leaderboard","description":"GET /api/jobs/leaderboard_old on bitsec.ai — legacy sibling of the already-registered /api/jobs/leaderboard, documented in the subnet's own OpenAPI schema with no security scheme. Live-verified 2026-07-21 (~22:05 UTC): HTTP 500 text/plain (currently erroring in production). Registered anyway, matching the registry's existing precedent of cataloguing real documented endpoints in their actual live state (e.g. Targon SN4's /tha/v2/healthz); probe expect:any since the current error body is not JSON.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-degraded"],"live_status":"degraded"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"http 500","status":"capture-failed"},"health":{"status":"degraded","classification":"dead","latency_ms":null,"last_ok":null,"last_checked":"2026-07-27T23:00:18.289Z","stale":false,"observed_by":"live-cron-prober"},"kind":"subnet-api","provider":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/leaderboard_old'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/leaderboard_old\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/leaderboard_old\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-leaderboard-old"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/agent","capability":"Bitsec.ai job-run agent lookup","description":"GET /api/jobs/runs/{job_run_id}/agent on bitsec.ai — gated read endpoint resolving the agent for a job run. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so probe.enabled:false. Path-parameterized; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template.","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/agent' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/agent\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/agent\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-run-agent"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/complete","capability":"Bitsec.ai job run complete","description":"POST /api/jobs/runs/{job_run_id}/complete on bitsec.ai — write endpoint marking a job run complete. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so probe.enabled:false. Path-parameterized; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template.","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/complete' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/complete\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/complete\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-run-complete"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/proxy-summary","capability":"Bitsec.ai job run proxy summary","description":"POST /api/jobs/runs/{job_run_id}/proxy-summary on bitsec.ai — write endpoint submitting a job run's proxy summary. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so probe.enabled:false. Path-parameterized; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template.","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/proxy-summary' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/proxy-summary\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/proxy-summary\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-run-proxy-summary"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/start","capability":"Bitsec.ai job run start","description":"POST /api/jobs/runs/{job_run_id}/start on bitsec.ai — write endpoint marking a job run started. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so probe.enabled:false. Path-parameterized; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template.","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/start' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/start\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/%7Bjob_run_id%7D/start\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-run-start"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/jobs/runs/active","capability":"Bitsec.ai active job runs","description":"Public no-auth GET /api/jobs/runs/active on bitsec.ai, returning currently active/recent validator job runs (validator_id, status, miner_id, timestamps). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-runs-active.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/jobs/runs/active"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-runs-active.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":764,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/active'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/active\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/active\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-runs-active"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/jobs/runs/validator/%7Bvalidator_id%7D","capability":"Bitsec.ai job runs by validator","description":"GET /api/jobs/runs/validator/{validator_id} on bitsec.ai, documented in the subnet's own OpenAPI schema with no security scheme and no header parameters. Live-verified 2026-07-21 (~22:05 UTC): a placeholder validator_id returns HTTP 422 int_parsing validation error, not an auth rejection. Path-parameterized (integer id; no stable canonical value to probe against), so probe.enabled:false; the URL's %7B...%7D segment is the URI-encoded form of a literal {param} template (raw braces fail the url format:\"uri\" schema check).","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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/runs/validator/%7Bvalidator_id%7D'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/runs/validator/%7Bvalidator_id%7D\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/runs/validator/%7Bvalidator_id%7D\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-runs-by-validator"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/jobs/stats","capability":"Bitsec.ai jobs stats","description":"Public no-auth GET /api/jobs/stats on bitsec.ai, returning aggregate weekly stats (agents created, top score, real vulnerabilities found, daily prize pool). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-stats.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/jobs/stats"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-jobs-stats.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":316,"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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/jobs/stats'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/jobs/stats\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/jobs/stats\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-jobs-stats"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/projects/","capability":"Bitsec.ai projects list","description":"Public no-auth GET /api/projects/ on bitsec.ai, returning the full benchmark project catalog (slug, commit, platform, repo_url, visibility). Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints. Distinct from the known-solutions surface (findings for the current project set only).","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-projects-list.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/projects/"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-projects-list.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":331,"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":"bitsec-ai","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://bitsec.ai/api/projects/'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/projects/\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/projects/\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-projects-list"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://bitsec.ai/api/projects/sets","capability":"Bitsec.ai project sets","description":"Public no-auth GET /api/projects/sets on bitsec.ai, returning the historical list of project-set versions (id, name, active flag) used to evaluate SN60 miner agents over time. Discovered via a full diff of the subnet's own OpenAPI schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-projects-sets.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://bitsec.ai/api/projects/sets"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-60-bitsec-projects-sets.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":125,"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":"bitsec-ai","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://bitsec.ai/api/projects/sets'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/projects/sets\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/projects/sets\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-projects-sets"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/users/","capability":"Bitsec.ai user create","description":"POST /api/users/ on bitsec.ai — write endpoint creating a user record. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/users/' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/users/\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/users/\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-users-create"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/users/validators/heartbeat","capability":"Bitsec.ai validator heartbeat","description":"POST /api/users/validators/heartbeat on bitsec.ai — write endpoint recording a validator heartbeat. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/users/validators/heartbeat' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/users/validators/heartbeat\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/users/validators/heartbeat\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-users-validators-heartbeat"},{"auth":{"location":"header","name":"Authorization","scheme":"bearer","scopes_note":"Requires a Bearer token in the Authorization header (confirmed live: a well-formed \"Bearer <token>\" progresses past the missing-header check to an invalid-token-format error). No hotkey-signed request or API key is accepted for this route.","value_format":"Bearer <token>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://bitsec.ai/api/users/validators/me","capability":"Bitsec.ai validator self-lookup","description":"GET /api/users/validators/me on bitsec.ai — gated read endpoint resolving the calling validator's own record. The subnet's own OpenAPI schema declares a required credential header parameter on this operation (this API declares no formal security scheme anywhere). Live-verified 2026-07-21 (~22:05 UTC): unauthenticated request returns HTTP 422 with a missing-required-header validation error on that exact parameter, consistent with the gate being enforced at the framework layer. Not callable by the anonymous Phase-1 call_subnet_surface tool, so 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":"bitsec-ai","schema_artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-60-bitsec-ai-openapi.json","hash":"2171069891706ec571940f03d5ec8194062ec87c614fec73b995642d817e4947","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-60-bitsec-ai-openapi","url":"https://bitsec.ai/api/openapi.json"},"schema_status":"machine-readable","schema_url":"https://bitsec.ai/api/openapi.json","snippets":{"curl":"curl -sS 'https://bitsec.ai/api/users/validators/me' \\\n  -H 'Authorization: Bearer <token>'","python":"import requests\n\nresp = requests.get(\"https://bitsec.ai/api/users/validators/me\", headers={\"Authorization\": \"Bearer <token>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://bitsec.ai/api/users/validators/me\", {\n  headers: { \"Authorization\": \"Bearer <token>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-60-bitsec-users-validators-me"}],"slug":"sn-60","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober","previously_known_as":["Bitsec.ai"]},"meta":{"artifact_path":"/metagraph/agent-catalog/60.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"}}