{"ok":true,"schema_version":1,"data":{"agent_readiness":{"blocker_level":"none","blockers":[],"missing_fields":[],"status":"callable"},"categories":["ai-marketplace","baseline-augmented","baseline-curated","identity-reviewed","official-api","official-openapi","official-source-repo","official-website","payments"],"completeness_score":85,"contract_version":"2026-07-03.2","example_count":0,"examples":[],"generated_at":"2026-07-27T10:51:25.049Z","integration_readiness":100,"name":"Handshake58","netuid":58,"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":6,"services":[{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://handshake58.com/api/directory/providers","capability":"Handshake58 provider directory","description":"Public no-auth GET returning the directory of registered miner providers (id, name, apiUrl). Documented in the subnet's own OpenAPI schema.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-directory-providers.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://handshake58.com/api/directory/providers"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-directory-providers.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":833,"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":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/api/directory/providers'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/api/directory/providers\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/api/directory/providers\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-directory-providers"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://handshake58.com/openapi.json","capability":"Handshake58 OpenAPI schema","description":"Machine-readable OpenAPI schema advertised by the Handshake58 plugin manifest.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"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":"openapi","provider":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/openapi.json'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/openapi.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/openapi.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-openapi"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://handshake58.com/api/mcp/providers","capability":"Handshake58 provider directory API","description":"Public JSON provider directory for the Handshake58 marketplace.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"ok","classification":"live","latency_ms":284,"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":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"schema-url","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/api/mcp/providers'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/api/mcp/providers\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/api/mcp/providers\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-provider-directory-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://handshake58.com/api/skills?status=published","capability":"Handshake58 skills API","description":"Public JSON skills index exposed by Handshake58.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"ok","classification":"live","latency_ms":466,"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":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/api/skills?status=published'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/api/skills?status=published\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/api/skills?status=published\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-skills-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://handshake58.com/api/agent","capability":"Handshake58 agent discovery API","description":"Public no-auth GET returning the DRAIN protocol agent discovery manifest (links to skill.md, providers_api, signing_api, directory, source). Documented in the subnet's own OpenAPI schema (title \"Handshake58 DRAIN Protocol API\"); same host as the existing subnet-api surfaces.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://handshake58.com/api/agent"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":442,"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":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/api/agent'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/api/agent\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/api/agent\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-subnet-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://handshake58.com/api/validator/registry","capability":"Handshake58 validator miner registry API","description":"Public no-auth GET returning the lightweight validator miner registry (approved online miners with UID, categories, and model counts). Documented in the subnet's own OpenAPI (handshake58.com/openapi.json, path /api/validator/registry); same host as existing subnet-api surfaces. Distinct from the provider directory and skills endpoints.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-validator-registry-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://handshake58.com/api/validator/registry"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-58-handshake58-validator-registry-api.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":"subnet-api","provider":"handshake58","schema_artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-58-handshake58-openapi.json","hash":"122dbc524dbed62b6840249afbd03b9f2567fcfdba9603e94e2230237d73fc8e","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-58-handshake58-openapi","url":"https://handshake58.com/openapi.json"},"schema_status":"machine-readable","schema_url":"https://handshake58.com/openapi.json","snippets":{"curl":"curl -sS 'https://handshake58.com/api/validator/registry'","python":"import requests\n\nresp = requests.get(\"https://handshake58.com/api/validator/registry\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://handshake58.com/api/validator/registry\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-58-handshake58-validator-registry-api"}],"slug":"sn-58","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober","previously_known_as":["greevils"]},"meta":{"artifact_path":"/metagraph/agent-catalog/58.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"}}