{"openapi":"3.1.0","info":{"title":"Taostats (BYOK) API","version":"0.1.0","description":"Taostats (BYOK) lets an AI assistant read your own Taostats data through the Taostats API with a key you supply (Taostats API key (sent as the whole Authorization value)). Read-only: 12 tools (get_price, get_price_candles, get_network_stats, get_account, get_alpha_portfolio, list_subnet_pools, list_subnet_identities, list_validators, list_blocks, list_transfers, list_subnet_trades,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-taostats.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-taostats/docs"},"termsOfService":"https://connectorbay.com/byok-taostats/terms"},"servers":[{"url":"https://byok-taostats.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-taostats/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_price":{"post":{"operationId":"get_price","summary":"Get the latest price snapshot of an asset such as TAO: USD price, market cap, volume, supply and percent changes. Use fo","description":"Get the latest price snapshot of an asset such as TAO: USD price, market cap, volume, supply and percent changes. Use for \"What is the current TAO price and 24 hour change\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Asset symbol, case-insensitive, for example TAO.","maxLength":20,"title":"Asset","type":"string"}},"required":["asset"],"title":"get_priceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_price_candles":{"post":{"operationId":"get_price_candles","summary":"Get OHLC price candles for an asset at 1 minute, 1 hour or 1 day resolution. Use for \"Show daily TAO price candles for t","description":"Get OHLC price candles for an asset at 1 minute, 1 hour or 1 day resolution. Use for \"Show daily TAO price candles for the last two weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Asset symbol, for example TAO.","maxLength":20,"title":"Asset","type":"string"},"period":{"description":"Candle size: 1m, 1h or 1d.","enum":["1m","1h","1d"],"title":"Period","type":"string"},"timestamp_start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or after this Unix time in seconds.","title":"Timestamp Start"},"timestamp_end":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or before this Unix time in seconds.","title":"Timestamp End"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["asset","period"],"title":"get_price_candlesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_network_stats":{"post":{"operationId":"get_network_stats","summary":"Get Bittensor network totals: accounts, balance holders, issued, free and staked TAO, subnet count, transfers and extrin","description":"Get Bittensor network totals: accounts, balance holders, issued, free and staked TAO, subnet count, transfers and extrinsics. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"How many TAO are staked on Bittensor and how many accounts exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_network_statsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_account":{"post":{"operationId":"get_account","summary":"Get one Bittensor account by SS58 or 0x address: free, reserved and staked balances, rank, alpha balances per subnet and","description":"Get one Bittensor account by SS58 or 0x address: free, reserved and staked balances, rank, alpha balances per subnet and 24 hour comparisons. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"What is the TAO balance and stake of this Bittensor wallet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Account address in SS58 form (starts with 5) or 0x hex.","maxLength":200,"title":"Address","type":"string"}},"required":["address"],"title":"get_accountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_alpha_portfolio":{"post":{"operationId":"get_alpha_portfolio","summary":"Get a coldkey's alpha (subnet token) positions with balance in TAO, average buy and sell prices and realised and unreali","description":"Get a coldkey's alpha (subnet token) positions with balance in TAO, average buy and sell prices and realised and unrealised profit. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"What alpha positions does this Bittensor coldkey hold and how profitable are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"coldkey":{"description":"Staker coldkey, SS58 or 0x hex.","maxLength":100,"title":"Coldkey","type":"string"},"hotkey":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only positions staked to this validator hotkey.","title":"Hotkey"},"netuid":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this subnet number.","title":"Netuid"},"days":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Aggregate over the last N days only (omit for all time).","title":"Days"}},"required":["coldkey"],"title":"get_alpha_portfolioArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_subnet_pools":{"post":{"operationId":"list_subnet_pools","summary":"List the latest dTAO pool snapshot per subnet: alpha price, liquidity, market cap, TAO and alpha in pool. Amounts are de","description":"List the latest dTAO pool snapshot per subnet: alpha price, liquidity, market cap, TAO and alpha in pool. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"Which subnets have the highest market cap right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"netuid":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this subnet number.","title":"Netuid"},"order_by":{"anyOf":[{"enum":["netuid","price","liquidity","market_cap","tao_in_pool","total_alpha","alpha_in_pool","alpha_staked","root_prop"],"type":"string"},{"type":"null"}],"default":"netuid","description":"Sort column: netuid, price, liquidity, market_cap, tao_in_pool, total_alpha, alpha_in_pool, alpha_staked or root_prop.","title":"Order By"},"order_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc or desc (default asc).","title":"Order Dir"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_subnet_poolsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_subnet_identities":{"post":{"operationId":"list_subnet_identities","summary":"List subnet identities: name, description, website, GitHub repository, contact and tags. Use for \"What does subnet 1 do ","description":"List subnet identities: name, description, website, GitHub repository, contact and tags. Use for \"What does subnet 1 do and where is its repository\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"netuid":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this subnet number.","title":"Netuid"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_subnet_identitiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_validators":{"post":{"operationId":"list_validators","summary":"List Bittensor validators ranked by stake with name, hotkey, take, nominators, stake, dominance and daily returns. Amoun","description":"List Bittensor validators ranked by stake with name, hotkey, take, nominators, stake, dominance and daily returns. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"Which validators have the most stake and what take do they charge\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hotkey":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this validator hotkey (SS58 or 0x hex).","title":"Hotkey"},"order_by":{"anyOf":[{"enum":["rank","root_rank","alpha_rank","active_subnets","global_nominators","take","global_weighted_stake","global_alpha_stake_as_tao","weighted_root_stake","root_stake","dominance"],"type":"string"},{"type":"null"}],"default":"rank","description":"Sort column: rank, root_rank, alpha_rank, active_subnets, global_nominators, take, global_weighted_stake, global_alpha_stake_as_tao, weighted_root_stake, root_stake or dominance.","title":"Order By"},"order_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc or desc (default asc).","title":"Order Dir"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_validatorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_blocks":{"post":{"operationId":"list_blocks","summary":"List indexed Bittensor blocks, newest first by default, with number, hash, time, validator and counts of extrinsics, cal","description":"List indexed Bittensor blocks, newest first by default, with number, hash, time, validator and counts of extrinsics, calls and events. Use for \"What are the latest Bittensor blocks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"block_number":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Exact block number.","title":"Block Number"},"hash":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Exact block hash, 0x hex.","title":"Hash"},"timestamp_start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or after this Unix time in seconds.","title":"Timestamp Start"},"timestamp_end":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or before this Unix time in seconds.","title":"Timestamp End"},"order_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc (default desc).","title":"Order Dir"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_blocksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transfers":{"post":{"operationId":"list_transfers","summary":"List TAO transfers filtered by address, sender, recipient, amount, block or time range, newest first by default. Amounts","description":"List TAO transfers filtered by address, sender, recipient, amount, block or time range, newest first by default. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"What TAO transfers did this address make recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Match transfers where this SS58 or 0x address is sender or recipient.","title":"Address"},"from_address":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sender address.","title":"From Address"},"to":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Recipient address.","title":"To"},"amount_min":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Minimum amount in RAO as a decimal string.","title":"Amount Min"},"order_by":{"anyOf":[{"enum":["timestamp","amount"],"type":"string"},{"type":"null"}],"default":"timestamp","description":"Sort column: timestamp or amount.","title":"Order By"},"order_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc (default desc).","title":"Order Dir"},"timestamp_start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or after this Unix time in seconds.","title":"Timestamp Start"},"timestamp_end":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or before this Unix time in seconds.","title":"Timestamp End"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_transfersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_subnet_trades":{"post":{"operationId":"list_subnet_trades","summary":"List dTAO alpha trades (buys, sells and moves) with coldkey, tokens, amounts, TAO value and USD value. Amounts are decim","description":"List dTAO alpha trades (buys, sells and moves) with coldkey, tokens, amounts, TAO value and USD value. Amounts are decimal strings in RAO (1 TAO = 1,000,000,000 RAO). Use for \"What large alpha buys happened on Bittensor today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"coldkey":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only trades by this coldkey.","title":"Coldkey"},"from_name":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Source token name, TAO or SN followed by the subnet number; from_name=TAO lists buys.","title":"From Name"},"to_name":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Destination token name, TAO or SN followed by the subnet number; to_name=TAO lists sells.","title":"To Name"},"order_by":{"anyOf":[{"enum":["timestamp","from_amount","to_amount","tao_value","usd_value"],"type":"string"},{"type":"null"}],"default":"timestamp","description":"Sort column: timestamp, from_amount, to_amount, tao_value or usd_value.","title":"Order By"},"order_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc (default desc).","title":"Order Dir"},"timestamp_start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or after this Unix time in seconds.","title":"Timestamp Start"},"timestamp_end":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only rows at or before this Unix time in seconds.","title":"Timestamp End"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 200).","title":"Limit"},"page":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_subnet_tradesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_subnet_registration_cost":{"post":{"operationId":"get_subnet_registration_cost","summary":"Get the latest cost, in RAO, of registering a new Bittensor subnet. Use for \"How much does it cost to register a Bittens","description":"Get the latest cost, in RAO, of registering a new Bittensor subnet. Use for \"How much does it cost to register a Bittensor subnet right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_subnet_registration_costArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}