{"ok":true,"schema_version":1,"data":{"agent_readiness":{"blocker_level":"missing-data","blockers":[{"code":"missing-schema","field":"schemas","message":"At least one callable service exists, but no captured schema artifact is available.","next_action":"Capture an official OpenAPI/Swagger/JSON Schema source or document that no schema exists.","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":["docs_url","schemas"],"status":"callable"},"categories":["baseline-augmented","baseline-curated","identity-reviewed","official-source-repo","official-website"],"completeness_score":78,"contract_version":"2026-07-03.2","example_count":0,"examples":[],"generated_at":"2026-07-27T10:51:25.049Z","integration_readiness":83,"name":"Djinn","netuid":103,"readiness":{"components":{"active_lifecycle":true,"auth_clarity":true,"callable_now":true,"documented":false,"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":83,"readiness_verified":true},"schema_version":1,"service_count":13,"services":[{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/delegates","capability":"Djinn delegate name registry","description":"Public no-auth GET /api/delegates on www.djinn.gg returning a hotkey-to-display-name mapping for known network delegates (e.g. Kraken, tao.bot, Cortex Foundation). Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-delegates.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/delegates"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-delegates.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":108,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/delegates'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/delegates\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/delegates\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-delegates"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/genius/earnings","capability":"Djinn genius earnings by address","description":"Public no-auth GET /api/genius/earnings on www.djinn.gg returning Genius-track earnings for one Ethereum address. Requires query param `address`. Callable via call_subnet_surface's `query` argument. probe.enabled:false because bare GET without address returns HTTP 400. Live-verified 2026-07-21: no address → 400 {\"error\":\"invalid_address\",...}.","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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/genius/earnings'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/genius/earnings\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/genius/earnings\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-genius-earnings"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/leaderboard","capability":"Djinn genius track-record leaderboard","description":"Public no-auth JSON leaderboard of SN103 Djinn 'Genius' analysts served from the official djinn.gg site, exposing each genius's on-chain track record (totalSignals, totalPurchases, totalVolume, totalFeesEarned, aggregateQualityScore, collateralDeposited, totalSlashed, favorable/unfavorable/void counts). This is the machine-readable form of the publicly-verifiable track records the official Djinn-Inc/djinn README describes (\"Track records are publicly verifiable on-chain\"), served on the README's official djinn.gg domain.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-genius-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/leaderboard"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-genius-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":324,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/leaderboard'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/leaderboard\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/leaderboard\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-genius-leaderboard"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/genius/signals","capability":"Djinn genius signals by address","description":"Public no-auth GET /api/genius/signals on www.djinn.gg returning Genius-track signals for one Ethereum address. Requires query param `address`. Callable via call_subnet_surface's `query` argument. probe.enabled:false because bare GET without address returns HTTP 400. Live-verified 2026-07-21: no address → 400 {\"error\":\"invalid_address\",...}.","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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/genius/signals'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/genius/signals\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/genius/signals\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-genius-signals"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/health","capability":"Djinn API health","description":"Public no-auth GET /api/health on www.djinn.gg returning application liveness JSON. Implemented in the official Djinn web repository on the same host as the registered website surface.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-health.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/health"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-health.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":252,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/health'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/health\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/health\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-health"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://raw.githubusercontent.com/Djinn-Inc/djinn/main/min_compute.yml","capability":"Djinn minimum compute requirements","description":"Public no-auth YAML miner and validator hardware specification (CPU, memory, storage, OS, and bandwidth) published at the root of the official Djinn-Inc/djinn repository as min_compute.yml. Documents SN103 operator requirements for TLSNotary proof miners and MPC validators without GPU.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"non-json response","status":"capture-failed"},"health":{"status":"ok","classification":"live","latency_ms":166,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://raw.githubusercontent.com/Djinn-Inc/djinn/main/min_compute.yml'","python":"import requests\n\nresp = requests.get(\"https://raw.githubusercontent.com/Djinn-Inc/djinn/main/min_compute.yml\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://raw.githubusercontent.com/Djinn-Inc/djinn/main/min_compute.yml\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-min-compute-spec"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/miners/discover","capability":"Djinn miner discovery list","description":"Public no-auth GET /api/miners/discover on www.djinn.gg returning the full registered miner list (uid, ip, port, hotkey, coldkey, stake, alphaStake, taoStake, incentive). Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-miners-discover.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/miners/discover"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-miners-discover.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":128,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/miners/discover'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/miners/discover\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/miners/discover\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-miners-discover"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/network/config","capability":"Djinn validator endpoint config","description":"Public no-auth GET /api/network/config on www.djinn.gg returning the configured validator endpoint list (uid, name, endpoint URL, pubkey). Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-network-config.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/network/config"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-network-config.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":1011,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/network/config'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/network/config\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/network/config\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-network-config"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/network/matrix","capability":"Djinn validator/miner health matrix","description":"Public no-auth GET /api/network/matrix on www.djinn.gg returning a per-validator breakdown of stake, version, health, and each validator's per-miner status matrix. Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","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":90,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/network/matrix'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/network/matrix\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/network/matrix\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-network-matrix"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/network/status","capability":"Djinn network summary status","description":"Public no-auth GET /api/network/status on www.djinn.gg returning network-wide summary counters (totalValidators, totalMiners, validatorsHealthy, totalShares, gini, burnPercent, featureFlags). Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-network-status.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/network/status"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-network-status.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":6057,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/network/status'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/network/status\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/network/status\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-network-status"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/odds","capability":"Djinn odds by sport","description":"Public no-auth GET /api/odds on www.djinn.gg returning live odds for one sport. Requires query param `sport` (allowed keys listed in the 400 body when omitted). Callable via call_subnet_surface's `query` argument. probe.enabled:false because bare GET without sport returns HTTP 400. Live-verified 2026-07-21: no sport → 400; ?sport=basketball_nba → 200 JSON.","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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/odds'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/odds\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/odds\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-odds"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/sports","capability":"Djinn supported sports list","description":"Public no-auth GET /api/sports on www.djinn.gg returning the list of supported sports keys/names/categories (NBA, NFL, MLB, NHL, several soccer leagues, etc.) used to key the /api/odds endpoint. Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-sports.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/sports"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-sports.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":163,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/sports'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/sports\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/sports\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-sports"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://www.djinn.gg/api/validators/discover","capability":"Djinn validator discovery list","description":"Public no-auth GET /api/validators/discover on www.djinn.gg returning the full registered validator list (uid, ip, port, hotkey, coldkey, stake, alphaStake, taoStake). Discovered by enumerating the web/app/api directory tree in the official Djinn-Inc/djinn source repository.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-validators-discover.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://www.djinn.gg/api/validators/discover"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-103-djinn-validators-discover.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":80,"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":"djinn","schema_artifact":null,"schema_source":null,"schema_status":null,"schema_url":null,"snippets":{"curl":"curl -sS 'https://www.djinn.gg/api/validators/discover'","python":"import requests\n\nresp = requests.get(\"https://www.djinn.gg/api/validators/discover\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://www.djinn.gg/api/validators/discover\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-103-djinn-validators-discover"}],"slug":"sn-103","subnet_type":"application","operational_observed_at":"2026-07-27T23:00:18.289Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/103.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"}}