{"id":"d77cbe9d-0a47-4e5c-9ed8-293fd2f5210d","entityType":"agent","slug":"clawhub-vanlabs-dev-bittensor-taostats","name":"Bittensor - taostats","canonicalUrl":"https://www.xpersona.co/agent/clawhub-vanlabs-dev-bittensor-taostats","canonicalPath":"/agent/clawhub-vanlabs-dev-bittensor-taostats","generatedAt":"2026-10-09T07:16:50.921Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Skill: Bittensor - taostats Owner: vanlabs-dev Summary: Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-02-11T03:52:20.687Z | user - Documentation updated. - Removed instructions to add the TAOSTATS_API_KEY export to shell profiles. - Added Python client reference: added mention of taostats_cli","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 674 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn7a81sdex3gszysgg397hwvw180y8sb:bittensor-taostats","sourceUrl":"https://clawhub.ai/vanlabs-dev/bittensor-taostats","homepage":"https://clawhub.ai/vanlabs-dev/bittensor-taostats","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/vanlabs-dev/bittensor-taostats","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":57,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Skill: Bittensor - taostats Owner: va"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":674,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"674 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T03:18:02.200Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T03:18:02.200Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T03:18:02.200Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-02-11T03:52:20.687Z","changelog":"- Documentation updated. - Removed instructions to add the TAOSTATS_API_KEY export to shell profiles. - Added Python client reference: added mention of taostats_client.py and example usage. - No code or functional changes.","fileCount":8,"zipByteSize":15098},{"version":"1.0.1","createdAt":"2026-02-11T03:48:55.525Z","changelog":"- Updated setup instructions to use an environment variable for the API key (`export TAOSTATS_API_KEY=…`) instead of a `.taostats` file. - Added a note to persist the API key export in your shell profile for future sessions. - No changes to API usage, quick reference, or endpoint documentation.","fileCount":8,"zipByteSize":15035},{"version":"1.0.0","createdAt":"2026-02-11T03:36:00.499Z","changelog":"Initial release of TaoStats skill for Bittensor blockchain analytics. - Enables interaction with the TaoStats API for comprehensive blockchain data: subnets, validators, miners, staking, emissions, and more. - Includes full endpoint documentation with sample Bash usage for each API call. - Provides setup instructions for API key management and shell integration. - Offers ready-to-use helper functions for common analytics (e.g., pool data, validator yields, staking balances). - Features advanced Bash patterns for real-time analytics: entry quality checks, validator selection, portfolio review, APY scanning, and net flow monitoring. - Includes a Python client for robust programmatic access to TaoStats API.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn7a81sdex3gszysgg397hwvw180y8sb:bittensor-taostats","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T07:16:50.921Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vanlabs-dev-bittensor-taostats/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Bittensor - taostats\n\nOwner: vanlabs-dev\n\nSummary: Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics.\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-02-11T03:52:20.687Z | user\n\n- Documentation updated. \n- Removed instructions to add the TAOSTATS_API_KEY export to shell profiles.\n- Added Python client reference: added mention of taostats_client.py and example usage.\n- No code or functional changes.\n\nv1.0.1 | 2026-02-11T03:48:55.525Z | user\n\n- Updated setup instructions to use an environment variable for the API key (`export TAOSTATS_API_KEY=…`) instead of a `.taostats` file.\n- Added a note to persist the API key export in your shell profile for future sessions.\n- No changes to API usage, quick reference, or endpoint documentation.\n\nv1.0.0 | 2026-02-11T03:36:00.499Z | user\n\nInitial release of TaoStats skill for Bittensor blockchain analytics.\n\n- Enables interaction with the TaoStats API for comprehensive blockchain data: subnets, validators, miners, staking, emissions, and more.\n- Includes full endpoint documentation with sample Bash usage for each API call.\n- Provides setup instructions for API key management and shell integration.\n- Offers ready-to-use helper functions for common analytics (e.g., pool data, validator yields, staking balances).\n- Features advanced Bash patterns for real-time analytics: entry quality checks, validator selection, portfolio review, APY scanning, and net flow monitoring.\n- Includes a Python client for robust programmatic access to TaoStats API.\n\nArchive index:\n\nArchive v1.0.2: 8 files, 15098 bytes\n\nFiles: balance_history.py (4042b), README.md (851b), skill.json (1994b), SKILL.md (15939b), taostats_client.py (5131b), taostats.sh (14205b), validator_tracker.py (2044b), _meta.json (137b)\n\nFile v1.0.2:SKILL.md\n\n# TaoStats Skill\n\n**Purpose**: Interact with TaoStats API for Bittensor blockchain data - subnets, validators, miners, staking, emissions, and more.\n\n**API Documentation**: https://docs.taostats.io/  \n**Base URL**: `https://api.taostats.io`  \n**Rate Limit**: 5 calls/minute (free tier)\n\n---\n## Setup\n\n### 1. Set API Key\nGet a free API key from [taostats.io](https://taostats.io) and export it as an environment variable:\n```bash\nexport TAOSTATS_API_KEY=\"tao-xxxxx:yyyyy\"\n```\n\n### 2. Source Helper Functions\n```bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n```\n\n---\n\n## Complete Endpoint Reference\n\n### dTAO Pool Endpoints\n\n#### `GET /api/dtao/pool/latest/v1?netuid={N}`\n**CRITICAL**: This endpoint has EVERYTHING for trading decisions.\n\n**Key Fields**:\n- `price` - Current alpha price in TAO\n- `root_prop` - % of price from root TAO injection (CRITICAL for entry validation)\n- `fear_and_greed_index` / `fear_and_greed_sentiment` - Market sentiment\n- `seven_day_prices` - Historical price array (42 data points)\n- `price_change_1_hour`, `price_change_1_day`, `price_change_1_week`, `price_change_1_month`\n- `market_cap`, `liquidity`, `total_tao`, `total_alpha`\n- `tao_volume_24_hr`, `alpha_volume_24_hr`, `buys_24_hr`, `sells_24_hr`\n- `highest_price_24_hr`, `lowest_price_24_hr`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq '.data[0].root_prop'\n# Returns: \"0.2104087259347016725\" (21% - GOOD entry)\n```\n\n#### `GET /api/dtao/pool/history/v1?netuid={N}&limit={L}`\nHistorical pool snapshots for backtesting.\n\n#### `GET /api/dtao/validator/yield/latest/v1?netuid={N}`\nValidator APYs with multiple timeframes.\n\n**Key Fields**:\n- `seven_day_apy` - Primary metric for staking decisions\n- `one_day_apy`, `one_hour_apy`, `thirty_day_apy`\n- `seven_day_epoch_participation` - Validator reliability\n- `name`, `hotkey.ss58`, `stake`, `take`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58): \\(.seven_day_apy * 100)% APY\"'\n```\n\n#### `GET /api/dtao/stake_balance/latest/v1?coldkey={COLDKEY}`\nAll stake positions across all subnets.\n\n**Key Fields**:\n- `netuid`, `hotkey.ss58`, `hotkey_name`\n- `balance_as_tao` - ⚠️ IN RAO (divide by 1e9)\n- `price`, `price_change_1_day`\n- `root_prop` - Per-position root proportion\n\n### Subnet Endpoints\n\n#### `GET /api/subnet/latest/v1` or `?netuid={N}`\nComplete subnet parameters and economics.\n\n**Key Fields**:\n- `netuid`, `emission`, `projected_emission`\n- `net_flow_1_day`, `net_flow_7_days`, `net_flow_30_days` - Capital flow tracking\n- `recycled_24_hours`, `recycled_lifetime` - Registration economics\n- `tao_flow`, `excess_tao` - dTAO mechanics\n- `immune_owner_uids_limit`, `immunity_period` - Risk assessment\n- `max_validators`, `active_validators`\n- `difficulty`, `adjustment_alpha` - Mining economics\n\n#### `GET /api/subnet/registration/v1?netuid={N}`\nSubnet registration details.\n\n**Key Fields**:\n- `owner.ss58` - Subnet owner\n- `registration_cost` - Current registration cost\n- `timestamp` - When registered\n\n### Validator Endpoints\n\n#### `GET /api/validator/latest/v1?netuid={N}`\nCurrent validator state.\n\n**Key Fields**:\n- `apr`, `apr_7_day_average`, `apr_30_day_average`\n- `nominator_return_per_k` - Staker yield per 1000 TAO\n- `nominators`, `nominators_24_hr_change` - Capital inflows/outflows\n- `stake`, `stake_24_hr_change`, `validator_stake`, `system_stake`\n- `take` - Commission rate\n- `name`, `coldkey.ss58`, `hotkey.ss58`\n- `permits` - Subnet permissions\n\n#### `GET /api/validator/history/v1?netuid={N}&hotkey={H}&limit={L}`\nHistorical validator performance.\n\n**Key Fields**:\n- All APR metrics with daily granularity\n- `nominators_24_hr_change` - Track capital movements\n- `dominance`, `subnet_dominance` - Market share\n\n### Transaction Endpoints\n\n#### `GET /api/delegation/v1?nominator={COLDKEY}&action={all|stake|unstake}&limit={L}`\nComplete transaction history (stakes, unstakes, transfers).\n\n**Key Fields**:\n- `action` (\"add\" = stake, \"remove\" = unstake)\n- `amount`, `rate` (price), `tao_amount`, `alpha_amount`\n- `fee`, `slippage`\n- `block_number`, `timestamp`\n- `hotkey.ss58`, `coldkey.ss58`\n\n#### `GET /api/transfer/v1?from={COLDKEY}&limit={L}`\nTAO transfer history (not staking).\n\n**Key Fields**:\n- `from.ss58`, `to.ss58`, `amount`, `fee`\n- `block_number`, `timestamp`\n\n### Metagraph Endpoints\n\n#### `GET /api/metagraph/latest/v1?netuid={N}&limit={L}`\nComplete subnet state for every neuron.\n\n**Key Fields**:\n- `uid`, `hotkey.ss58`, `coldkey.ss58`\n- `rank`, `trust`, `consensus`, `incentive`, `dividends`, `emission`\n- `alpha_stake`, `root_stake`, `total_alpha_stake`\n- `daily_mining_alpha`, `daily_validating_alpha`, `daily_reward`\n- `validator_permit`, `is_immunity_period`, `in_danger`\n- `daily_burned_alpha`, `daily_owner_alpha`\n\n#### `GET /api/neuron/latest/v1?netuid={N}&limit={L}`\nSimplified neuron view with pruning risk.\n\n**Key Fields**:\n- `uid`, `name`, `hotkey.ss58`, `coldkey.ss58`\n- `pruning_score`, `in_danger`, `is_immune`\n- `miner_rank`, `validator_rank`\n\n---\n\n## Quick Reference\n\n### Get Subnet Pool Data\n```bash\ntaostats_pool 33\n# Returns: price, root_prop, fear_and_greed_index, 7-day price history, volume\n```\n\n### Get Validator APYs\n```bash\ntaostats_validator_yield 33\n# Returns: All validators with 1h/1d/7d/30d APYs\n```\n\n### Get Stake Balances\n```bash\ntaostats_stake_balance \"YOUR_COLDKEY_HERE\"\n# Returns: All positions with root_prop per subnet\n```\n\n### Get Transaction History\n```bash\ntaostats_delegation_history \"YOUR_COLDKEY_HERE\"\n# Returns: All stake/unstake transactions with slippage\n```\n\n### Get Subnet Parameters\n```bash\ntaostats_subnet_info 33\n# Returns: Emissions, net flows, registration cost, immunity params\n```\n\n### Get Metagraph\n```bash\ntaostats_metagraph 33\n# Returns: All neurons with stakes, ranks, emissions\n```\n\n---\n\n## Common Patterns\n\n### Check Entry Quality (root_prop < 0.30)\n```bash\nNETUID=33\nROOT_PROP=$(curl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=$NETUID\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq -r '.data[0].root_prop')\n\nif (( $(echo \"$ROOT_PROP < 0.30\" | bc -l) )); then\n  echo \"SN$NETUID: GOOD entry (root_prop: $ROOT_PROP)\"\nelse\n  echo \"SN$NETUID: AVOID (root_prop: $ROOT_PROP - artificial price)\"\nfi\n```\n\n### Find Best Validator for Subnet\n```bash\nNETUID=33\ncurl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=$NETUID\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58) | APY: \\(.seven_day_apy * 100)% | Commission: \\(.take * 100)%\"'\n```\n\n### Check Portfolio with root_prop per Position\n```bash\nCOLDKEY=\"YOUR_COLDKEY_HERE\"\ncurl -s \"https://api.taostats.io/api/dtao/stake_balance/latest/v1?coldkey=$COLDKEY\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data[] | \n  \"SN\\(.netuid): \\((.balance_as_tao | tonumber) / 1000000000) TAO | root_prop: \\(.root_prop)\"'\n```\n\n### Scan for High APY Opportunities (S-tier only)\n```bash\nfor NETUID in 33 64 51 13 3 1 100; do\n  MAX_APY=$(curl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=$NETUID\" \\\n    -H \"Authorization: $TAOSTATS_API_KEY\" | jq -r '.data | max_by(.seven_day_apy) | .seven_day_apy')\n  echo \"$NETUID|$MAX_APY\"\n  sleep 0.3\ndone | sort -t'|' -k2 -rn | while IFS='|' read netuid apy; do\n  printf \"SN%-3s: %6.1f%%\\n\" \"$netuid\" \"$(echo \"$apy * 100\" | bc -l)\"\ndone\n```\n\n### Monitor Capital Flows (net_flow indicates momentum)\n```bash\ncurl -s \"https://api.taostats.io/api/subnet/latest/v1\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data[] | select(.netuid != 0) | \n  \"SN\\(.netuid): net_flow_7d=\\(.net_flow_7_days) | emission=\\(.emission)\"' | \\\n  sort -t'=' -k2 -rn | head -10\n```\n\n---\n\n## Python Tools\n\n### `taostats_client.py`\nRobust API client with automatic retry logic.\n\n```python\nfrom taostats_client import TaostatsAPI\n\napi = TaostatsAPI(\"your-api-key\")\n\n# Single call with retry\nresult = api.get_json(\"dtao/pool/latest/v1?netuid=33\")\n\n# Paginated (handles all pages automatically)\nall_data = api.get_paginated(\"dtao/stake_balance/latest/v1?coldkey=XYZ\")\n\n# Balance history\nhistory = api.get_balance_history(coldkey, start_timestamp, end_timestamp)\n```\n\n### `balance_history.py`\nTrack daily portfolio changes over time.\n\n```bash\n# View last 30 days\npython3 skills/taostats/balance_history.py --days 30\n\n# Export to CSV\npython3 skills/taostats/balance_history.py --days 90 --export\n```\n\n**Output:**\n```\n📊 Portfolio History (30 records):\n--------------------------------------------------------------------------------\nDate         Free τ    Staked τ    Total τ    Daily Δ\n--------------------------------------------------------------------------------\n2026-01-07   0.0234    1.9567    1.9801            \n2026-01-08   0.0256    1.9789    2.0045   +0.0244\n...\nOverall Change: +0.5399 τ (+27.27%)\n```\n\n---\n\n## Bash Functions (taostats.sh)\n\n### Core Trading Functions\n\n#### `taostats_pool <netuid>`\nGet full pool data including root_prop and fear & greed.\n- **Returns**: price, root_prop, fear_and_greed_index, seven_day_prices, volume\n- **Use for**: Entry validation, sentiment analysis, price history\n\n#### `taostats_pool_history <netuid> [limit]`\nHistorical pool snapshots.\n- **Returns**: Time-series of pool state\n- **Use for**: Backtesting, trend analysis\n\n#### `taostats_validator_yield <netuid>`\nAll validators with APYs.\n- **Returns**: 1h/1d/7d/30d APYs, participation rates\n- **Use for**: Validator selection\n\n#### `taostats_stake_balance <coldkey>`\nAll positions with per-subnet root_prop.\n- **Returns**: Balance, price, root_prop per position\n- **Use for**: Portfolio monitoring, risk assessment\n\n#### `taostats_delegation_history <coldkey> [limit]`\nTransaction history with slippage.\n- **Returns**: Stakes, unstakes, fees, slippage\n- **Use for**: Performance tracking, tax records\n\n### Subnet Analysis Functions\n\n#### `taostats_subnet_info [netuid]`\nSubnet parameters and economics.\n- **Returns**: Emissions, net flows, registration costs\n- **Use for**: Fundamental analysis\n\n#### `taostats_subnet_registration <netuid>`\nSubnet ownership and registration details.\n- **Returns**: Owner, registration cost, timestamp\n- **Use for**: Due diligence\n\n### Validator Analysis Functions\n\n#### `taostats_validator_info <netuid>`\nCurrent validator state.\n- **Returns**: APR, nominator returns, stake changes\n- **Use for**: Deep validator research\n\n#### `taostats_validator_history <netuid> <hotkey> [limit]`\nHistorical validator performance.\n- **Returns**: Daily APR trends\n- **Use for**: Validator reliability assessment\n\n### Metagraph Functions\n\n#### `taostats_metagraph <netuid>`\nComplete subnet state.\n- **Returns**: All neurons with stakes, emissions, ranks\n- **Use for**: Ecosystem analysis\n\n#### `taostats_neurons <netuid>`\nSimplified neuron view.\n- **Returns**: Pruning scores, immunity status\n- **Use for**: Risk monitoring\n\n---\n\n## Rate Limit Handling\n\n**Free tier**: 5 calls per minute\n\n**Best practices**:\n1. Cache pool data (changes slowly)\n2. Use `sleep 0.3` between calls (20 calls/min safe)\n3. Batch where possible\n4. Monitor for 429 errors\n\n**Example rate-limited loop**:\n```bash\nfor NETUID in {1..50}; do\n  taostats_pool $NETUID | jq -r '.data[0] | \"SN\\(.netuid): root_prop=\\(.root_prop)\"'\n  sleep 0.3\ndone\n```\n\n---\n\n## Error Handling\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 401 | Invalid API key | Check `.taostats` format, no \"Bearer\" prefix |\n| 404 | Wallet not indexed | Wait 1-2 hours for new wallets |\n| 429 | Rate limit | Add `sleep` delays between calls |\n| Empty | Inactive subnet | Check if subnet exists first |\n\n---\n\n## Critical Fields for Trading\n\n### Entry Validation\n- `root_prop` < 0.30 = Good (organic price)\n- `root_prop` > 0.70 = Bad (artificially pumped)\n\n### Momentum Signals\n- `net_flow_7_days` > 0 = Capital inflow\n- `nominators_24_hr_change` > 0 = Growing validator stake\n\n### Risk Metrics\n- `in_danger` = true → Pruning risk\n- `is_immunity_period` = true → Protected from dereg\n- `pruning_score` → Lower is safer\n\n### Sentiment\n- `fear_and_greed_index` < 30 = Fear (potential buy)\n- `fear_and_greed_index` > 70 = Greed (potential wait)\n\n---\n\n## Known Issues\n\n### `balance_as_tao` Field Bug\n**Issue**: Returns value in rao (raw units), not TAO.\n\n**Workaround**: Always divide by 1,000,000,000\n```bash\nbalance_tao=$(echo \"$balance_as_tao / 1000000000\" | bc -l)\n```\n\n**Affected endpoints**:\n- `/api/dtao/stake_balance/latest/v1`\n\n---\n\n## Integration Examples\n\n### Entry Scanner (root_prop + APY + flow)\n```bash\n#!/bin/bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n\necho \"=== High-Quality Entry Opportunities ===\"\nfor NETUID in 33 64 51 13 3 1 100 117 12 120; do\n  POOL=$(taostats_pool $NETUID)\n  ROOT_PROP=$(echo \"$POOL\" | jq -r '.data[0].root_prop')\n  PRICE=$(echo \"$POOL\" | jq -r '.data[0].price')\n  FEAR_GREED=$(echo \"$POOL\" | jq -r '.data[0].fear_and_greed_sentiment')\n  \n  MAX_APY=$(taostats_validator_yield $NETUID | jq -r '.data | max_by(.seven_day_apy) | .seven_day_apy')\n  \n  if (( $(echo \"$ROOT_PROP < 0.30\" | bc -l) )); then\n    printf \"SN%-3s | root_prop: %.2f | APY: %5.1f%% | Sentiment: %s\\n\" \\\n      \"$NETUID\" \"$ROOT_PROP\" \"$(echo \"$MAX_APY * 100\" | bc -l)\" \"$FEAR_GREED\"\n  fi\n  sleep 0.3\ndone\n```\n\n### Portfolio Risk Monitor\n```bash\n#!/bin/bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n\nCOLDKEY=\"YOUR_COLDKEY\"\necho \"=== Portfolio Risk Assessment ===\"\n\ntaostats_stake_balance $COLDKEY | jq -r '.data[] | \n  \"\\(.netuid)|\\(.balance_as_tao)|\\(.root_prop)\"' | while IFS='|' read netuid balance root_prop; do\n  BALANCE_TAO=$(echo \"$balance / 1000000000\" | bc -l)\n  if (( $(echo \"$root_prop > 0.50\" | bc -l) )); then\n    printf \"⚠️ SN%-3s: %6.3f TAO | HIGH root_prop: %.2f - Consider exit\\n\" \"$netuid\" \"$BALANCE_TAO\" \"$root_prop\"\n  else\n    printf \"✅ SN%-3s: %6.3f TAO | OK root_prop: %.2f\\n\" \"$netuid\" \"$BALANCE_TAO\" \"$root_prop\"\n  fi\ndone\n```\n\n---\n\n## Python Wrapper\n\n```python\nimport requests\nimport os\n\nclass TaoStatsAPI:\n    def __init__(self):\n        self.base_url = \"https://api.taostats.io\"\n        self.api_key = os.getenv(\"TAOSTATS_API_KEY\")\n        \n    def _get(self, endpoint):\n        headers = {\"Authorization\": self.api_key, \"accept\": \"application/json\"}\n        r = requests.get(f\"{self.base_url}{endpoint}\", headers=headers)\n        return r.json()\n    \n    def pool(self, netuid):\n        \"\"\"Get pool data with root_prop and fear & greed\"\"\"\n        return self._get(f\"/api/dtao/pool/latest/v1?netuid={netuid}\")\n    \n    def validator_yield(self, netuid):\n        \"\"\"Get all validators with APYs\"\"\"\n        return self._get(f\"/api/dtao/validator/yield/latest/v1?netuid={netuid}\")\n    \n    def stake_balance(self, coldkey):\n        \"\"\"Get all positions with root_prop per subnet\"\"\"\n        return self._get(f\"/api/dtao/stake_balance/latest/v1?coldkey={coldkey}\")\n    \n    def subnet_info(self, netuid=None):\n        \"\"\"Get subnet parameters and net flows\"\"\"\n        if netuid:\n            return self._get(f\"/api/subnet/latest/v1?netuid={netuid}\")\n        return self._get(\"/api/subnet/latest/v1\")\n\n# Usage\napi = TaoStatsAPI()\npool = api.pool(33)\nprint(f\"SN33 root_prop: {pool['data'][0]['root_prop']}\")\n```\n\n---\n\n## Skill Maintenance\n\n**Last Updated**: 2026-02-06  \n**Author**: vanlabs-dev  \n**Dependencies**: `curl`, `jq`, `bc`\n\n**Changelog**:\n- 2026-02-06: COMPLETE OVERHAUL - Discovered root_prop, fear_and_greed, 7-day history in pool endpoint\n- 2026-02-06: Added all working endpoints from discovery testing\n- 2026-02-06: Added entry validation patterns using root_prop\n- 2026-02-03: Initial version\n\n**TODO**:\n- [ ] Add caching layer for pool data\n- [ ] Build retry logic with exponential backoff\n- [ ] Create real-time monitoring dashboard\n- [ ] Add root_prop alerts for portfolio positions\n\nFile v1.0.2:README.md\n\n# TaoStats Skill - Quick Start\n\n## Installation\n```bash\n# Already installed at ~/.openclaw/workspace/skills/taostats/\n```\n\n## Setup\n1. Ensure `.taostats` file exists in workspace root with your API key\n2. Source the functions: `source ~/.openclaw/workspace/skills/taostats/taostats.sh`\n\n## Most Useful Commands\n\n### Check Portfolio\n```bash\ntaostats_stake_balance \"YOUR_COLDKEY\" | jq '.data[] | \"SN\\(.netuid): \\((.balance_as_tao | tonumber) / 1e9) TAO\"'\n```\n\n### Find Best Validator\n```bash\ntaostats_top_validators 12\n```\n\n### Scan for High APY\n```bash\ntaostats_scan_apy 80  # Find subnets with >80% APY\n```\n\n### Check Transaction History\n```bash\ntaostats_delegation_history \"YOUR_COLDKEY\" 10\n```\n\n### Get Total Staked\n```bash\ntaostats_total_staked \"YOUR_COLDKEY\"\n```\n\n## Full Documentation\nSee `SKILL.md` for complete function reference and examples.\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7a81sdex3gszysgg397hwvw180y8sb\",\n  \"slug\": \"bittensor-taostats\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1770781940687\n}\n\nFile v1.0.2:skill.json\n\n{\n  \"name\": \"taostats\",\n  \"version\": \"1.1.0\",\n  \"description\": \"TaoStats API wrapper for Bittensor blockchain data - subnets, validators, staking, emissions. Read-only GET calls to api.taostats.io.\",\n  \"author\": \"vanlabs-dev\",\n  \"created\": \"2026-02-03\",\n  \"tags\": [\n    \"bittensor\",\n    \"taostats\",\n    \"blockchain\",\n    \"crypto\",\n    \"api\"\n  ],\n  \"dependencies\": {\n    \"system\": [\n      \"curl\",\n      \"jq\",\n      \"bc\"\n    ],\n    \"python\": [\n      \"requests\"\n    ],\n    \"api\": [\n      \"TaoStats API key (free tier at taostats.io)\"\n    ]\n  },\n  \"files\": {\n    \"main\": \"taostats.sh\",\n    \"python\": [\n      \"taostats_client.py\",\n      \"balance_history.py\",\n      \"validator_tracker.py\"\n    ],\n    \"docs\": [\n      \"SKILL.md\",\n      \"README.md\"\n    ]\n  },\n  \"credentials\": {\n    \"required\": [\n      \"TAOSTATS_API_KEY\"\n    ],\n    \"description\": \"Free API key from taostats.io. Export as environment variable.\",\n    \"storage\": \"environment_variable\"\n  },\n  \"setup\": {\n    \"env_vars\": [\n      \"TAOSTATS_API_KEY\"\n    ]\n  },\n  \"permissions\": {\n    \"network\": [\n      \"api.taostats.io\"\n    ],\n    \"filesystem\": \"read-only\",\n    \"disableModelInvocation\": true\n  },\n  \"functions\": [\n    \"taostats_pool\",\n    \"taostats_validator_yield\",\n    \"taostats_stake_balance\",\n    \"taostats_delegation_history\",\n    \"taostats_pruning\",\n    \"taostats_dev_activity\",\n    \"taostats_metagraph\",\n    \"taostats_slippage\",\n    \"taostats_coldkey_balance\",\n    \"taostats_top_validators\",\n    \"taostats_total_staked\",\n    \"taostats_dereg_risk\",\n    \"taostats_scan_apy\",\n    \"taostats_tao_price\",\n    \"rao_to_tao\",\n    \"tao_to_rao\",\n    \"taostats_batch_apy\"\n  ],\n  \"examples\": [\n    {\n      \"name\": \"Check portfolio\",\n      \"command\": \"taostats_total_staked YOUR_COLDKEY\"\n    },\n    {\n      \"name\": \"Find best validator\",\n      \"command\": \"taostats_top_validators 12\"\n    },\n    {\n      \"name\": \"Scan high APY\",\n      \"command\": \"taostats_scan_apy 100\"\n    }\n  ],\n  \"requires\": {\n    \"env\": [\n      \"TAOSTATS_API_KEY\"\n    ]\n  }\n}\n\nArchive v1.0.1: 8 files, 15035 bytes\n\nFiles: balance_history.py (4042b), README.md (851b), skill.json (1781b), SKILL.md (15825b), taostats_client.py (5131b), taostats.sh (14205b), validator_tracker.py (2044b), _meta.json (137b)\n\nFile v1.0.1:SKILL.md\n\n# TaoStats Skill\n\n**Purpose**: Interact with TaoStats API for Bittensor blockchain data - subnets, validators, miners, staking, emissions, and more.\n\n**API Documentation**: https://docs.taostats.io/  \n**Base URL**: `https://api.taostats.io`  \n**Rate Limit**: 5 calls/minute (free tier)\n\n---\n## Setup\n\n### 1. Set API Key\nGet a free API key from [taostats.io](https://taostats.io) and export it as an environment variable:\n```bash\nexport TAOSTATS_API_KEY=\"tao-xxxxx:yyyyy\"\n```\nAdd to your shell profile (`~/.bashrc`, `~/.zshrc`) to persist across sessions.\n\n### 2. Source Helper Functions\n```bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n```\n\n---\n\n## Complete Endpoint Reference\n\n### dTAO Pool Endpoints\n\n#### `GET /api/dtao/pool/latest/v1?netuid={N}`\n**CRITICAL**: This endpoint has EVERYTHING for trading decisions.\n\n**Key Fields**:\n- `price` - Current alpha price in TAO\n- `root_prop` - % of price from root TAO injection (CRITICAL for entry validation)\n- `fear_and_greed_index` / `fear_and_greed_sentiment` - Market sentiment\n- `seven_day_prices` - Historical price array (42 data points)\n- `price_change_1_hour`, `price_change_1_day`, `price_change_1_week`, `price_change_1_month`\n- `market_cap`, `liquidity`, `total_tao`, `total_alpha`\n- `tao_volume_24_hr`, `alpha_volume_24_hr`, `buys_24_hr`, `sells_24_hr`\n- `highest_price_24_hr`, `lowest_price_24_hr`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq '.data[0].root_prop'\n# Returns: \"0.2104087259347016725\" (21% - GOOD entry)\n```\n\n#### `GET /api/dtao/pool/history/v1?netuid={N}&limit={L}`\nHistorical pool snapshots for backtesting.\n\n#### `GET /api/dtao/validator/yield/latest/v1?netuid={N}`\nValidator APYs with multiple timeframes.\n\n**Key Fields**:\n- `seven_day_apy` - Primary metric for staking decisions\n- `one_day_apy`, `one_hour_apy`, `thirty_day_apy`\n- `seven_day_epoch_participation` - Validator reliability\n- `name`, `hotkey.ss58`, `stake`, `take`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58): \\(.seven_day_apy * 100)% APY\"'\n```\n\n#### `GET /api/dtao/stake_balance/latest/v1?coldkey={COLDKEY}`\nAll stake positions across all subnets.\n\n**Key Fields**:\n- `netuid`, `hotkey.ss58`, `hotkey_name`\n- `balance_as_tao` - ⚠️ IN RAO (divide by 1e9)\n- `price`, `price_change_1_day`\n- `root_prop` - Per-position root proportion\n\n### Subnet Endpoints\n\n#### `GET /api/subnet/latest/v1` or `?netuid={N}`\nComplete subnet parameters and economics.\n\n**Key Fields**:\n- `netuid`, `emission`, `projected_emission`\n- `net_flow_1_day`, `net_flow_7_days`, `net_flow_30_days` - Capital flow tracking\n- `recycled_24_hours`, `recycled_lifetime` - Registration economics\n- `tao_flow`, `excess_tao` - dTAO mechanics\n- `immune_owner_uids_limit`, `immunity_period` - Risk assessment\n- `max_validators`, `active_validators`\n- `difficulty`, `adjustment_alpha` - Mining economics\n\n#### `GET /api/subnet/registration/v1?netuid={N}`\nSubnet registration details.\n\n**Key Fields**:\n- `owner.ss58` - Subnet owner\n- `registration_cost` - Current registration cost\n- `timestamp` - When registered\n\n### Validator Endpoints\n\n#### `GET /api/validator/latest/v1?netuid={N}`\nCurrent validator state.\n\n**Key Fields**:\n- `apr`, `apr_7_day_average`, `apr_30_day_average`\n- `nominator_return_per_k` - Staker yield per 1000 TAO\n- `nominators`, `nominators_24_hr_change` - Capital inflows/outflows\n- `stake`, `stake_24_hr_change`, `validator_stake`, `system_stake`\n- `take` - Commission rate\n- `name`, `coldkey.ss58`, `hotkey.ss58`\n- `permits` - Subnet permissions\n\n#### `GET /api/validator/history/v1?netuid={N}&hotkey={H}&limit={L}`\nHistorical validator performance.\n\n**Key Fields**:\n- All APR metrics with daily granularity\n- `nominators_24_hr_change` - Track capital movements\n- `dominance`, `subnet_dominance` - Market share\n\n### Transaction Endpoints\n\n#### `GET /api/delegation/v1?nominator={COLDKEY}&action={all|stake|unstake}&limit={L}`\nComplete transaction history (stakes, unstakes, transfers).\n\n**Key Fields**:\n- `action` (\"add\" = stake, \"remove\" = unstake)\n- `amount`, `rate` (price), `tao_amount`, `alpha_amount`\n- `fee`, `slippage`\n- `block_number`, `timestamp`\n- `hotkey.ss58`, `coldkey.ss58`\n\n#### `GET /api/transfer/v1?from={COLDKEY}&limit={L}`\nTAO transfer history (not staking).\n\n**Key Fields**:\n- `from.ss58`, `to.ss58`, `amount`, `fee`\n- `block_number`, `timestamp`\n\n### Metagraph Endpoints\n\n#### `GET /api/metagraph/latest/v1?netuid={N}&limit={L}`\nComplete subnet state for every neuron.\n\n**Key Fields**:\n- `uid`, `hotkey.ss58`, `coldkey.ss58`\n- `rank`, `trust`, `consensus`, `incentive`, `dividends`, `emission`\n- `alpha_stake`, `root_stake`, `total_alpha_stake`\n- `daily_mining_alpha`, `daily_validating_alpha`, `daily_reward`\n- `validator_permit`, `is_immunity_period`, `in_danger`\n- `daily_burned_alpha`, `daily_owner_alpha`\n\n#### `GET /api/neuron/latest/v1?netuid={N}&limit={L}`\nSimplified neuron view with pruning risk.\n\n**Key Fields**:\n- `uid`, `name`, `hotkey.ss58`, `coldkey.ss58`\n- `pruning_score`, `in_danger`, `is_immune`\n- `miner_rank`, `validator_rank`\n\n---\n\n## Quick Reference\n\n### Get Subnet Pool Data\n```bash\ntaostats_pool 33\n# Returns: price, root_prop, fear_and_greed_index, 7-day price history, volume\n```\n\n### Get Validator APYs\n```bash\ntaostats_validator_yield 33\n# Returns: All validators with 1h/1d/7d/30d APYs\n```\n\n### Get Stake Balances\n```bash\ntaostats_stake_balance \"YOUR_COLDKEY_HERE\"\n# Returns: All positions with root_prop per subnet\n```\n\n### Get Transaction History\n```bash\ntaostats_delegation_history \"YOUR_COLDKEY_HERE\"\n# Returns: All stake/unstake transactions with slippage\n```\n\n### Get Subnet Parameters\n```bash\ntaostats_subnet_info 33\n# Returns: Emissions, net flows, registration cost, immunity params\n```\n\n### Get Metagraph\n```bash\ntaostats_metagraph 33\n# Returns: All neurons with stakes, ranks, emissions\n```\n\n---\n\n## Common Patterns\n\n### Check Entry Quality (root_prop < 0.30)\n```bash\nNETUID=33\nROOT_PROP=$(curl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=$NETUID\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq -r '.data[0].root_prop')\n\nif (( $(echo \"$ROOT_PROP < 0.30\" | bc -l) )); then\n  echo \"SN$NETUID: GOOD entry (root_prop: $ROOT_PROP)\"\nelse\n  echo \"SN$NETUID: AVOID (root_prop: $ROOT_PROP - artificial price)\"\nfi\n```\n\n### Find Best Validator for Subnet\n```bash\nNETUID=33\ncurl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=$NETUID\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58) | APY: \\(.seven_day_apy * 100)% | Commission: \\(.take * 100)%\"'\n```\n\n### Check Portfolio with root_prop per Position\n```bash\nCOLDKEY=\"YOUR_COLDKEY_HERE\"\ncurl -s \"https://api.taostats.io/api/dtao/stake_balance/latest/v1?coldkey=$COLDKEY\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data[] | \n  \"SN\\(.netuid): \\((.balance_as_tao | tonumber) / 1000000000) TAO | root_prop: \\(.root_prop)\"'\n```\n\n### Scan for High APY Opportunities (S-tier only)\n```bash\nfor NETUID in 33 64 51 13 3 1 100; do\n  MAX_APY=$(curl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=$NETUID\" \\\n    -H \"Authorization: $TAOSTATS_API_KEY\" | jq -r '.data | max_by(.seven_day_apy) | .seven_day_apy')\n  echo \"$NETUID|$MAX_APY\"\n  sleep 0.3\ndone | sort -t'|' -k2 -rn | while IFS='|' read netuid apy; do\n  printf \"SN%-3s: %6.1f%%\\n\" \"$netuid\" \"$(echo \"$apy * 100\" | bc -l)\"\ndone\n```\n\n### Monitor Capital Flows (net_flow indicates momentum)\n```bash\ncurl -s \"https://api.taostats.io/api/subnet/latest/v1\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data[] | select(.netuid != 0) | \n  \"SN\\(.netuid): net_flow_7d=\\(.net_flow_7_days) | emission=\\(.emission)\"' | \\\n  sort -t'=' -k2 -rn | head -10\n```\n\n---\n\n## Python Tools\n\n### `taostats_client.py`\nRobust API client with automatic retry logic.\n\n```python\nfrom taostats_client import TaostatsAPI\n\napi = TaostatsAPI(\"your-api-key\")\n\n# Single call with retry\nresult = api.get_json(\"dtao/pool/latest/v1?netuid=33\")\n\n# Paginated (handles all pages automatically)\nall_data = api.get_paginated(\"dtao/stake_balance/latest/v1?coldkey=XYZ\")\n\n# Balance history\nhistory = api.get_balance_history(coldkey, start_timestamp, end_timestamp)\n```\n\n### `balance_history.py`\nTrack daily portfolio changes over time.\n\n```bash\n# View last 30 days\npython3 skills/taostats/balance_history.py --days 30\n\n# Export to CSV\npython3 skills/taostats/balance_history.py --days 90 --export\n```\n\n**Output:**\n```\n📊 Portfolio History (30 records):\n--------------------------------------------------------------------------------\nDate         Free τ    Staked τ    Total τ    Daily Δ\n--------------------------------------------------------------------------------\n2026-01-07   0.0234    1.9567    1.9801            \n2026-01-08   0.0256    1.9789    2.0045   +0.0244\n...\nOverall Change: +0.5399 τ (+27.27%)\n```\n\n---\n\n## Bash Functions (taostats.sh)\n\n### Core Trading Functions\n\n#### `taostats_pool <netuid>`\nGet full pool data including root_prop and fear & greed.\n- **Returns**: price, root_prop, fear_and_greed_index, seven_day_prices, volume\n- **Use for**: Entry validation, sentiment analysis, price history\n\n#### `taostats_pool_history <netuid> [limit]`\nHistorical pool snapshots.\n- **Returns**: Time-series of pool state\n- **Use for**: Backtesting, trend analysis\n\n#### `taostats_validator_yield <netuid>`\nAll validators with APYs.\n- **Returns**: 1h/1d/7d/30d APYs, participation rates\n- **Use for**: Validator selection\n\n#### `taostats_stake_balance <coldkey>`\nAll positions with per-subnet root_prop.\n- **Returns**: Balance, price, root_prop per position\n- **Use for**: Portfolio monitoring, risk assessment\n\n#### `taostats_delegation_history <coldkey> [limit]`\nTransaction history with slippage.\n- **Returns**: Stakes, unstakes, fees, slippage\n- **Use for**: Performance tracking, tax records\n\n### Subnet Analysis Functions\n\n#### `taostats_subnet_info [netuid]`\nSubnet parameters and economics.\n- **Returns**: Emissions, net flows, registration costs\n- **Use for**: Fundamental analysis\n\n#### `taostats_subnet_registration <netuid>`\nSubnet ownership and registration details.\n- **Returns**: Owner, registration cost, timestamp\n- **Use for**: Due diligence\n\n### Validator Analysis Functions\n\n#### `taostats_validator_info <netuid>`\nCurrent validator state.\n- **Returns**: APR, nominator returns, stake changes\n- **Use for**: Deep validator research\n\n#### `taostats_validator_history <netuid> <hotkey> [limit]`\nHistorical validator performance.\n- **Returns**: Daily APR trends\n- **Use for**: Validator reliability assessment\n\n### Metagraph Functions\n\n#### `taostats_metagraph <netuid>`\nComplete subnet state.\n- **Returns**: All neurons with stakes, emissions, ranks\n- **Use for**: Ecosystem analysis\n\n#### `taostats_neurons <netuid>`\nSimplified neuron view.\n- **Returns**: Pruning scores, immunity status\n- **Use for**: Risk monitoring\n\n---\n\n## Rate Limit Handling\n\n**Free tier**: 5 calls per minute\n\n**Best practices**:\n1. Cache pool data (changes slowly)\n2. Use `sleep 0.3` between calls (20 calls/min safe)\n3. Batch where possible\n4. Monitor for 429 errors\n\n**Example rate-limited loop**:\n```bash\nfor NETUID in {1..50}; do\n  taostats_pool $NETUID | jq -r '.data[0] | \"SN\\(.netuid): root_prop=\\(.root_prop)\"'\n  sleep 0.3\ndone\n```\n\n---\n\n## Error Handling\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 401 | Invalid API key | Check `.taostats` format, no \"Bearer\" prefix |\n| 404 | Wallet not indexed | Wait 1-2 hours for new wallets |\n| 429 | Rate limit | Add `sleep` delays between calls |\n| Empty | Inactive subnet | Check if subnet exists first |\n\n---\n\n## Critical Fields for Trading\n\n### Entry Validation\n- `root_prop` < 0.30 = Good (organic price)\n- `root_prop` > 0.70 = Bad (artificially pumped)\n\n### Momentum Signals\n- `net_flow_7_days` > 0 = Capital inflow\n- `nominators_24_hr_change` > 0 = Growing validator stake\n\n### Risk Metrics\n- `in_danger` = true → Pruning risk\n- `is_immunity_period` = true → Protected from dereg\n- `pruning_score` → Lower is safer\n\n### Sentiment\n- `fear_and_greed_index` < 30 = Fear (potential buy)\n- `fear_and_greed_index` > 70 = Greed (potential wait)\n\n---\n\n## Known Issues\n\n### `balance_as_tao` Field Bug\n**Issue**: Returns value in rao (raw units), not TAO.\n\n**Workaround**: Always divide by 1,000,000,000\n```bash\nbalance_tao=$(echo \"$balance_as_tao / 1000000000\" | bc -l)\n```\n\n**Affected endpoints**:\n- `/api/dtao/stake_balance/latest/v1`\n\n---\n\n## Integration Examples\n\n### Entry Scanner (root_prop + APY + flow)\n```bash\n#!/bin/bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n\necho \"=== High-Quality Entry Opportunities ===\"\nfor NETUID in 33 64 51 13 3 1 100 117 12 120; do\n  POOL=$(taostats_pool $NETUID)\n  ROOT_PROP=$(echo \"$POOL\" | jq -r '.data[0].root_prop')\n  PRICE=$(echo \"$POOL\" | jq -r '.data[0].price')\n  FEAR_GREED=$(echo \"$POOL\" | jq -r '.data[0].fear_and_greed_sentiment')\n  \n  MAX_APY=$(taostats_validator_yield $NETUID | jq -r '.data | max_by(.seven_day_apy) | .seven_day_apy')\n  \n  if (( $(echo \"$ROOT_PROP < 0.30\" | bc -l) )); then\n    printf \"SN%-3s | root_prop: %.2f | APY: %5.1f%% | Sentiment: %s\\n\" \\\n      \"$NETUID\" \"$ROOT_PROP\" \"$(echo \"$MAX_APY * 100\" | bc -l)\" \"$FEAR_GREED\"\n  fi\n  sleep 0.3\ndone\n```\n\n### Portfolio Risk Monitor\n```bash\n#!/bin/bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n\nCOLDKEY=\"YOUR_COLDKEY\"\necho \"=== Portfolio Risk Assessment ===\"\n\ntaostats_stake_balance $COLDKEY | jq -r '.data[] | \n  \"\\(.netuid)|\\(.balance_as_tao)|\\(.root_prop)\"' | while IFS='|' read netuid balance root_prop; do\n  BALANCE_TAO=$(echo \"$balance / 1000000000\" | bc -l)\n  if (( $(echo \"$root_prop > 0.50\" | bc -l) )); then\n    printf \"⚠️ SN%-3s: %6.3f TAO | HIGH root_prop: %.2f - Consider exit\\n\" \"$netuid\" \"$BALANCE_TAO\" \"$root_prop\"\n  else\n    printf \"✅ SN%-3s: %6.3f TAO | OK root_prop: %.2f\\n\" \"$netuid\" \"$BALANCE_TAO\" \"$root_prop\"\n  fi\ndone\n```\n\n---\n\n## Python Wrapper\n\n```python\nimport requests\nimport os\n\nclass TaoStatsAPI:\n    def __init__(self):\n        self.base_url = \"https://api.taostats.io\"\n        self.api_key = os.getenv(\"TAOSTATS_API_KEY\")\n        \n    def _get(self, endpoint):\n        headers = {\"Authorization\": self.api_key, \"accept\": \"application/json\"}\n        r = requests.get(f\"{self.base_url}{endpoint}\", headers=headers)\n        return r.json()\n    \n    def pool(self, netuid):\n        \"\"\"Get pool data with root_prop and fear & greed\"\"\"\n        return self._get(f\"/api/dtao/pool/latest/v1?netuid={netuid}\")\n    \n    def validator_yield(self, netuid):\n        \"\"\"Get all validators with APYs\"\"\"\n        return self._get(f\"/api/dtao/validator/yield/latest/v1?netuid={netuid}\")\n    \n    def stake_balance(self, coldkey):\n        \"\"\"Get all positions with root_prop per subnet\"\"\"\n        return self._get(f\"/api/dtao/stake_balance/latest/v1?coldkey={coldkey}\")\n    \n    def subnet_info(self, netuid=None):\n        \"\"\"Get subnet parameters and net flows\"\"\"\n        if netuid:\n            return self._get(f\"/api/subnet/latest/v1?netuid={netuid}\")\n        return self._get(\"/api/subnet/latest/v1\")\n\n# Usage\napi = TaoStatsAPI()\npool = api.pool(33)\nprint(f\"SN33 root_prop: {pool['data'][0]['root_prop']}\")\n```\n\n---\n\n## Skill Maintenance\n\n**Last Updated**: 2026-02-06  \n**Author**: vanlabs-dev  \n**Dependencies**: `curl`, `jq`, `bc`\n\n**Changelog**:\n- 2026-02-06: COMPLETE OVERHAUL - Discovered root_prop, fear_and_greed, 7-day history in pool endpoint\n- 2026-02-06: Added all working endpoints from discovery testing\n- 2026-02-06: Added entry validation patterns using root_prop\n- 2026-02-03: Initial version\n\nFile v1.0.1:README.md\n\n# TaoStats Skill - Quick Start\n\n## Installation\n```bash\n# Already installed at ~/.openclaw/workspace/skills/taostats/\n```\n\n## Setup\n1. Ensure `.taostats` file exists in workspace root with your API key\n2. Source the functions: `source ~/.openclaw/workspace/skills/taostats/taostats.sh`\n\n## Most Useful Commands\n\n### Check Portfolio\n```bash\ntaostats_stake_balance \"YOUR_COLDKEY\" | jq '.data[] | \"SN\\(.netuid): \\((.balance_as_tao | tonumber) / 1e9) TAO\"'\n```\n\n### Find Best Validator\n```bash\ntaostats_top_validators 12\n```\n\n### Scan for High APY\n```bash\ntaostats_scan_apy 80  # Find subnets with >80% APY\n```\n\n### Check Transaction History\n```bash\ntaostats_delegation_history \"YOUR_COLDKEY\" 10\n```\n\n### Get Total Staked\n```bash\ntaostats_total_staked \"YOUR_COLDKEY\"\n```\n\n## Full Documentation\nSee `SKILL.md` for complete function reference and examples.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7a81sdex3gszysgg397hwvw180y8sb\",\n  \"slug\": \"bittensor-taostats\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1770781735525\n}\n\nFile v1.0.1:skill.json\n\n{\n  \"name\": \"taostats\",\n  \"version\": \"1.1.0\",\n  \"description\": \"TaoStats API wrapper for Bittensor blockchain data - subnets, validators, staking, emissions. Read-only GET calls to api.taostats.io.\",\n  \"author\": \"vanlabs-dev\",\n  \"created\": \"2026-02-03\",\n  \"tags\": [\"bittensor\", \"taostats\", \"blockchain\", \"crypto\", \"api\"],\n  \"dependencies\": {\n    \"system\": [\"curl\", \"jq\", \"bc\"],\n    \"python\": [\"requests\"],\n    \"api\": [\"TaoStats API key (free tier at taostats.io)\"]\n  },\n  \"files\": {\n    \"main\": \"taostats.sh\",\n    \"python\": [\"taostats_client.py\", \"balance_history.py\", \"validator_tracker.py\"],\n    \"docs\": [\"SKILL.md\", \"README.md\"]\n  },\n  \"credentials\": {\n    \"required\": [\"TAOSTATS_API_KEY\"],\n    \"description\": \"Free API key from taostats.io. Export as environment variable.\",\n    \"storage\": \"environment_variable\"\n  },\n  \"setup\": {\n    \"env_vars\": [\"TAOSTATS_API_KEY\"]\n  },\n  \"permissions\": {\n    \"network\": [\"api.taostats.io\"],\n    \"filesystem\": \"read-only\",\n    \"disableModelInvocation\": false\n  },\n  \"functions\": [\n    \"taostats_pool\",\n    \"taostats_validator_yield\",\n    \"taostats_stake_balance\",\n    \"taostats_delegation_history\",\n    \"taostats_pruning\",\n    \"taostats_dev_activity\",\n    \"taostats_metagraph\",\n    \"taostats_slippage\",\n    \"taostats_coldkey_balance\",\n    \"taostats_top_validators\",\n    \"taostats_total_staked\",\n    \"taostats_dereg_risk\",\n    \"taostats_scan_apy\",\n    \"taostats_tao_price\",\n    \"rao_to_tao\",\n    \"tao_to_rao\",\n    \"taostats_batch_apy\"\n  ],\n  \"examples\": [\n    {\n      \"name\": \"Check portfolio\",\n      \"command\": \"taostats_total_staked YOUR_COLDKEY\"\n    },\n    {\n      \"name\": \"Find best validator\",\n      \"command\": \"taostats_top_validators 12\"\n    },\n    {\n      \"name\": \"Scan high APY\",\n      \"command\": \"taostats_scan_apy 100\"\n    }\n  ]\n}","readmeExcerpt":"Skill: Bittensor - taostats Owner: vanlabs-dev Summary: Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-02-11T03:52:20.687Z | user - Documentation updated. - Removed instructions to add the TAOSTATS_API_KEY export to shell profiles. - Added Python client reference: added mention of taostats_cli","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export TAOSTATS_API_KEY=\"tao-xxxxx:yyyyy\""},{"language":"bash","snippet":"source ~/.openclaw/workspace/skills/taostats/taostats.sh"},{"language":"bash","snippet":"curl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq '.data[0].root_prop'"},{"language":"bash","snippet":"curl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq '.data[0].root_prop'\n# Returns: \"0.2104087259347016725\" (21% - GOOD entry)"},{"language":"bash","snippet":"curl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\"},{"language":"bash","snippet":"curl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58): \\(.seven_day_apy * 100)% APY\"'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"# TaoStats Skill\n\n**Purpose**: Interact with TaoStats API for Bittensor blockchain data - subnets, validators, miners, staking, emissions, and more.\n\n**API Documentation**: https://docs.taostats.io/  \n**Base URL**: `https://api.taostats.io`  \n**Rate Limit**: 5 calls/minute (free tier)\n\n---\n## Setup\n\n### 1. Set API Key\nGet a free API key from [taostats.io](https://taostats.io) and export it as an environment variable:\n```bash\nexport TAOSTATS_API_KEY=\"tao-xxxxx:yyyyy\"\n```\n\n### 2. Source Helper Functions\n```bash\nsource ~/.openclaw/workspace/skills/taostats/taostats.sh\n```\n\n---\n\n## Complete Endpoint Reference\n\n### dTAO Pool Endpoints\n\n#### `GET /api/dtao/pool/latest/v1?netuid={N}`\n**CRITICAL**: This endpoint has EVERYTHING for trading decisions.\n\n**Key Fields**:\n- `price` - Current alpha price in TAO\n- `root_prop` - % of price from root TAO injection (CRITICAL for entry validation)\n- `fear_and_greed_index` / `fear_and_greed_sentiment` - Market sentiment\n- `seven_day_prices` - Historical price array (42 data points)\n- `price_change_1_hour`, `price_change_1_day`, `price_change_1_week`, `price_change_1_month`\n- `market_cap`, `liquidity`, `total_tao`, `total_alpha`\n- `tao_volume_24_hr`, `alpha_volume_24_hr`, `buys_24_hr`, `sells_24_hr`\n- `highest_price_24_hr`, `lowest_price_24_hr`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/pool/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | jq '.data[0].root_prop'\n# Returns: \"0.2104087259347016725\" (21% - GOOD entry)\n```\n\n#### `GET /api/dtao/pool/history/v1?netuid={N}&limit={L}`\nHistorical pool snapshots for backtesting.\n\n#### `GET /api/dtao/validator/yield/latest/v1?netuid={N}`\nValidator APYs with multiple timeframes.\n\n**Key Fields**:\n- `seven_day_apy` - Primary metric for staking decisions\n- `one_day_apy`, `one_hour_apy`, `thirty_day_apy`\n- `seven_day_epoch_participation` - Validator reliability\n- `name`, `hotkey.ss58`, `stake`, `take`\n\n**Example**:\n```bash\ncurl -s \"https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=33\" \\\n  -H \"Authorization: $TAOSTATS_API_KEY\" | \\\n  jq -r '.data | sort_by(-.seven_day_apy) | .[0] | \n  \"\\(.name // .hotkey.ss58): \\(.seven_day_apy * 100)% APY\"'\n```\n\n#### `GET /api/dtao/stake_balance/latest/v1?coldkey={COLDKEY}`\nAll stake positions across all subnets.\n\n**Key Fields**:\n- `netuid`, `hotkey.ss58`, `hotkey_name`\n- `balance_as_tao` - ⚠️ IN RAO (divide by 1e9)\n- `price`, `price_change_1_day`\n- `root_prop` - Per-position root proportion\n\n### Subnet Endpoints\n\n#### `GET /api/subnet/latest/v1` or `?netuid={N}`\nComplete subnet parameters and economics.\n\n**Key Fields**:\n- `netuid`, `emission`, `projected_emission`\n- `net_flow_1_day`, `net_flow_7_days`, `net_flow_30_days` - Capital flow tracking\n- `recycled_24_hours`, `recycled_lifetime` - Registration economics\n- `tao_flow`, `excess_tao` - dTAO mechanics\n- `immune_owner_uids_limit`, `immunity_period` - Risk assessment\n- `max_validators`, `active_validators`\n- `difficulty`, `adjustment_alpha` - Min"},{"path":"README.md","content":"# TaoStats Skill - Quick Start\n\n## Installation\n```bash\n# Already installed at ~/.openclaw/workspace/skills/taostats/\n```\n\n## Setup\n1. Ensure `.taostats` file exists in workspace root with your API key\n2. Source the functions: `source ~/.openclaw/workspace/skills/taostats/taostats.sh`\n\n## Most Useful Commands\n\n### Check Portfolio\n```bash\ntaostats_stake_balance \"YOUR_COLDKEY\" | jq '.data[] | \"SN\\(.netuid): \\((.balance_as_tao | tonumber) / 1e9) TAO\"'\n```\n\n### Find Best Validator\n```bash\ntaostats_top_validators 12\n```\n\n### Scan for High APY\n```bash\ntaostats_scan_apy 80  # Find subnets with >80% APY\n```\n\n### Check Transaction History\n```bash\ntaostats_delegation_history \"YOUR_COLDKEY\" 10\n```\n\n### Get Total Staked\n```bash\ntaostats_total_staked \"YOUR_COLDKEY\"\n```\n\n## Full Documentation\nSee `SKILL.md` for complete function reference and examples."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7a81sdex3gszysgg397hwvw180y8sb\",\n  \"slug\": \"bittensor-taostats\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1770781940687\n}"},{"path":"skill.json","content":"{\n  \"name\": \"taostats\",\n  \"version\": \"1.1.0\",\n  \"description\": \"TaoStats API wrapper for Bittensor blockchain data - subnets, validators, staking, emissions. Read-only GET calls to api.taostats.io.\",\n  \"author\": \"vanlabs-dev\",\n  \"created\": \"2026-02-03\",\n  \"tags\": [\n    \"bittensor\",\n    \"taostats\",\n    \"blockchain\",\n    \"crypto\",\n    \"api\"\n  ],\n  \"dependencies\": {\n    \"system\": [\n      \"curl\",\n      \"jq\",\n      \"bc\"\n    ],\n    \"python\": [\n      \"requests\"\n    ],\n    \"api\": [\n      \"TaoStats API key (free tier at taostats.io)\"\n    ]\n  },\n  \"files\": {\n    \"main\": \"taostats.sh\",\n    \"python\": [\n      \"taostats_client.py\",\n      \"balance_history.py\",\n      \"validator_tracker.py\"\n    ],\n    \"docs\": [\n      \"SKILL.md\",\n      \"README.md\"\n    ]\n  },\n  \"credentials\": {\n    \"required\": [\n      \"TAOSTATS_API_KEY\"\n    ],\n    \"description\": \"Free API key from taostats.io. Export as environment variable.\",\n    \"storage\": \"environment_variable\"\n  },\n  \"setup\": {\n    \"env_vars\": [\n      \"TAOSTATS_API_KEY\"\n    ]\n  },\n  \"permissions\": {\n    \"network\": [\n      \"api.taostats.io\"\n    ],\n    \"filesystem\": \"read-only\",\n    \"disableModelInvocation\": true\n  },\n  \"functions\": [\n    \"taostats_pool\",\n    \"taostats_validator_yield\",\n    \"taostats_stake_balance\",\n    \"taostats_delegation_history\",\n    \"taostats_pruning\",\n    \"taostats_dev_activity\",\n    \"taostats_metagraph\",\n    \"taostats_slippage\",\n    \"taostats_coldkey_balance\",\n    \"taostats_top_validators\",\n    \"taostats_total_staked\",\n    \"taostats_dereg_risk\",\n    \"taostats_scan_apy\",\n    \"taostats_tao_price\",\n    \"rao_to_tao\",\n    \"tao_to_rao\",\n    \"taostats_batch_apy\"\n  ],\n  \"examples\": [\n    {\n      \"name\": \"Check portfolio\",\n      \"command\": \"taostats_total_staked YOUR_COLDKEY\"\n    },\n    {\n      \"name\": \"Find best validator\",\n      \"command\": \"taostats_top_validators 12\"\n    },\n    {\n      \"name\": \"Scan high APY\",\n      \"command\": \"taostats_scan_apy 100\"\n    }\n  ],\n  \"requires\": {\n    \"env\": [\n      \"TAOSTATS_API_KEY\"\n    ]\n  }\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Skill: Bittensor - taostats Owner: vanlabs-dev Summary: Access Bittensor blockchain data via TaoStats API for subnets, validators, miners, staking, emissions, and market metrics. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-02-11T03:52:20.687Z | user - Documentation updated. - Removed instructions to add the TAOSTATS_API_KEY export to shell profiles. - Added Python client reference: added mention of taostats_cli","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1118,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:16:50.921Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}