Subtensor MCP
Subtensor blockchain reference — events, calls, storage, constants, errors for all 28 active pallets
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"reference": {
"url": "https://subtensor.com/mcp"
}
}
}遠端端點
https://subtensor.com/mcpstreamable-http它能做什麼
工具清單
工具(7)
🟢subtensor_search(query, type, status, cursor, limit, ...)
Search across all Subtensor pallets, events, calls, storage, constants, and errors by keyword.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query (e.g., 'stake', 'neuron', 'emission')"
},
"type": {
"type": "string",
"enum": [
"all",
"event",
"call",
"storage",
"constant",
"error",
"type",
"runtime-api",
"mechanism",
"workflow",
"hyperparameter",
"learn",
"glossary",
"runtime-error"
],
"description": "Filter by item type (default: all)"
},
"status": {
"type": "string",
"enum": [
"active",
"removed",
"all"
],
"description": "Filter by item status (default: 'active')"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"limit": {
"type": "number",
"description": "Max results per page (default: 10, max: 50)"
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
}
},
"required": [
"query"
]
}輸出結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"status_filter": {
"type": "string"
},
"total": {
"type": "number"
},
"removed_hidden": {
"type": "number"
},
"_removed_hint": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"pallet": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
},
"description": {
"type": "string"
},
"detail_url": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"type",
"pallet",
"name",
"score"
],
"additionalProperties": true
}
},
"nextCursor": {
"type": "string"
}
},
"required": [
"query",
"status_filter",
"total",
"results"
],
"additionalProperties": true
}🟢subtensor_lookup(urn, type, name, pallet, address, ...)
Get detailed info about a specific pallet, event, call, storage item, constant, error, SCALE type, RPC method, protocol account, or EVM precompile. Accepts URN identifiers with optional #field.path drilling.
輸入結構描述
{
"type": "object",
"properties": {
"urn": {
"type": "string",
"description": "URN identifier (e.g., 'subtensor:event:SubtensorModule.StakeAdded', 'subtensor:storage:System.Account#data.free', 'subtensor:api:SwapRuntimeApi.sim_swap_tao_for_alpha', 'subtensor:account:SubtensorModule.SubtensorPalletId#64', 'subtensor:precompile:StakingV2'). `subtensor:runtime_api:...` is accepted as an alias for `subtensor:api:...`. Supports field-path drilling with # for event/call/storage/type items (for account items, #fragment is a sub-index instead). Alternative to type+pallet+name. Takes precedence if both provided."
},
"type": {
"type": "string",
"enum": [
"pallet",
"event",
"call",
"storage",
"constant",
"error",
"type",
"runtime_api",
"rpc_method",
"account",
"precompile",
"cli_flag",
"build_feature"
],
"description": "What kind of item to look up"
},
"name": {
"type": [
"string",
"number"
],
"description": "Item name (e.g., 'SubtensorModule', 'StakeAdded', 'add_stake', 'AccountId32', 'pruning', 'pow-faucet') or type ID number. For type=\"account\": the declaring key ('SubtensorModule.SubtensorPalletId'). For type=\"precompile\": a name ('StakingV2') or 0x address."
},
"pallet": {
"type": "string",
"description": "Pallet name — required for event/call/storage/constant/error lookups (e.g., 'SubtensorModule')"
},
"address": {
"type": "string",
"description": "For type=\"account\": an SS58 address to identify. Returns which protocol account it is, including the sub-index, or reports that it is an ordinary wallet."
},
"sub": {
"type": [
"string",
"number"
],
"description": "For type=\"account\": derive a sub-account. A number is a netuid or crowdloan id; a string is an 8-byte tag such as \"beta/esc\". Index 0 collapses onto the base address."
},
"include": {
"type": "string",
"enum": [
"events",
"calls",
"storage",
"constants",
"errors"
],
"description": "For pallet lookup: filter to a specific item type with descriptions"
},
"include_removed": {
"type": "boolean",
"description": "Include removed/historical items (default: false)"
},
"include_history": {
"type": "boolean",
"description": "Include full argument signatures for each version range (events/calls only)"
},
"language": {
"type": "string",
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"description": "Field name casing for your language. TypeScript shows camelCase (tickLow), others show snake_case (tick_low). Overrides session preference."
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"preferences": {
"type": "string",
"description": "Preferences handle from subtensor_preferences(action=\"set\"). Carries language/node_url/node_type without a session. Explicit arguments on this call take precedence over the handle."
}
},
"required": []
}輸出結構描述
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Item kind, mirrors the request type"
},
"name": {
"type": "string"
},
"pallet": {
"type": "string"
}
},
"required": [
"type",
"name"
],
"additionalProperties": true
}🟢subtensor_list(category, pallet, include_removed, domain, kind, ...)
Browse items by category: pallets, events, calls, storage, constants, errors, types, runtime APIs, RPC methods, protocol accounts, EVM precompiles, mechanisms, workflows, hyperparameters, cli_flags, build_features, chain_specs, or env_vars.
輸入結構描述
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"pallets",
"events",
"calls",
"storage",
"constants",
"errors",
"types",
"runtime_apis",
"rpc_methods",
"accounts",
"precompiles",
"mechanisms",
"workflows",
"hyperparameters",
"cli_flags",
"build_features",
"chain_specs",
"env_vars"
],
"description": "Category of items to list"
},
"pallet": {
"type": "string",
"description": "Pallet name — required for events/calls/storage/constants/errors (e.g., 'SubtensorModule'). For category='rpc_methods' this filters by RPC namespace instead (e.g., 'state', 'subtensor')."
},
"include_removed": {
"type": "boolean",
"description": "Include removed/historical items (default: false)"
},
"domain": {
"type": "string",
"enum": [
"consensus",
"emission",
"staking",
"registration",
"subnet",
"governance",
"identity",
"security",
"swap",
"data",
"randomness"
],
"description": "For mechanisms: filter by domain"
},
"kind": {
"type": "string",
"enum": [
"primitive",
"composite",
"variant",
"sequence",
"array",
"tuple",
"compact"
],
"description": "For types: filter by type kind"
},
"search": {
"type": "string",
"description": "For types: search by name"
},
"role": {
"type": "string",
"description": "Filter calls by required role (only applies when category=calls)",
"enum": [
"hotkey",
"coldkey",
"coldkey:owner",
"coldkey:subnet-owner",
"root",
"senate",
"any"
]
},
"context": {
"type": "string",
"enum": [
"dev",
"production",
"both"
],
"description": "For cli_flags/build_features: filter by usage context"
},
"flag_category": {
"type": "string",
"description": "For cli_flags: filter by flag category (chain, sync, networking, rpc, metrics, runtime, subtensor)"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"limit": {
"type": "number",
"description": "Max items per page (default: 10)"
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
}
},
"required": [
"category"
]
}輸出結構描述
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Item category, mirrors the request category"
}
},
"required": [
"category"
],
"description": "Shape varies by category: each branch pins the category to the array field it returns its items in.",
"anyOf": [
{
"type": "object",
"properties": {
"category": {
"const": "pallets"
},
"pallets": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"pallets"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "events"
},
"events": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"events"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "calls"
},
"calls": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"calls"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "storage"
},
"storage": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"storage"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "constants"
},
"constants": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"constants"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "errors"
},
"errors": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"errors"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "types"
},
"types": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"types"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "runtime_apis"
},
"apis": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"apis"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "rpc_methods"
},
"methods": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"methods"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "accounts"
},
"accounts": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"accounts"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "precompiles"
},
"precompiles": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"precompiles"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "mechanisms"
},
"mechanisms": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"mechanisms"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "workflows"
},
"categories": {
"type": "object"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"categories"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "hyperparameters"
},
"hyperparameters": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"hyperparameters"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "cli_flags"
},
"cli_flags": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"cli_flags"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "build_features"
},
"build_features": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"build_features"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "chain_specs"
},
"chain_specs": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"chain_specs"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"category": {
"const": "env_vars"
},
"env_vars": {
"type": "array"
},
"total": {
"type": "number"
},
"count": {
"type": "number"
},
"nextCursor": {
"type": "string"
}
},
"required": [
"category",
"env_vars"
],
"additionalProperties": true
}
]
}🟢subtensor_explore(topic, pallet, name, type, from_version, ...)
Explore relationships, version history, removed items, changelogs, and migration guides between runtime versions.
輸入結構描述
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"relationships",
"emitters",
"modifiers",
"throwers",
"removed",
"changelog",
"migration",
"versions"
],
"description": "What to explore"
},
"pallet": {
"type": "string",
"description": "Pallet name (e.g., 'SubtensorModule')"
},
"name": {
"type": "string",
"description": "Item name (e.g., 'StakeAdded', 'add_stake', 'TotalStake')"
},
"type": {
"type": "string",
"enum": [
"event",
"call",
"storage",
"error",
"all",
"pallet",
"constant"
],
"description": "Item type — for relationships (event/call/storage/error), for removed (all/pallet/event/call/storage/constant/error)"
},
"from_version": {
"type": "number",
"description": "For changelog/migration: start version"
},
"to_version": {
"type": "number",
"description": "For changelog/migration: end version"
},
"version": {
"type": "number",
"description": "For versions: look up a specific version"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"limit": {
"type": "number",
"description": "Max items per page (default: 10)"
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
}
},
"required": [
"topic"
]
}輸出結構描述
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Explore topic, mirrors the request topic"
}
},
"required": [
"topic"
],
"additionalProperties": true
}🟢subtensor_explain(topic, name, pallet, item_type, language, ...)
Understand Bittensor concepts, workflows, mechanisms, runtime APIs, runtime errors, extrinsic format, or get code examples.
輸入結構描述
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"concept",
"workflow",
"mechanism",
"runtime_api",
"runtime_errors",
"extrinsic_format",
"examples",
"monitor",
"event_group"
],
"description": "What to explain"
},
"name": {
"type": "string",
"description": "Topic-specific name: concept name ('staking'), workflow ID ('add-stake'), mechanism ID ('yuma-consensus'), runtime API name ('NeuronInfoRuntimeApi'), or item name for examples"
},
"pallet": {
"type": "string",
"description": "Pallet name — required for examples (e.g., 'SubtensorModule')"
},
"item_type": {
"type": "string",
"enum": [
"storage",
"call",
"event"
],
"description": "For examples: type of item to generate code for"
},
"language": {
"type": "string",
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"description": "For examples: filter to one language (overrides session preference)"
},
"node_url": {
"type": "string",
"description": "For examples: WebSocket endpoint override"
},
"node_type": {
"type": "string",
"enum": [
"lite",
"archive"
],
"description": "For examples: 'lite' (current state) or 'archive' (historical patterns)"
},
"enum_slug": {
"type": "string",
"enum": [
"dispatch",
"token",
"arithmetic",
"transactional",
"trie",
"module"
],
"description": "For runtime_errors: get a specific error enum"
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"preferences": {
"type": "string",
"description": "Preferences handle from subtensor_preferences(action=\"set\"). Carries language/node_url/node_type without a session. Explicit arguments on this call take precedence over the handle."
}
},
"required": [
"topic"
]
}輸出結構描述
{
"type": "object",
"anyOf": [
{
"properties": {
"topic": {
"type": "string",
"description": "Explain topic, mirrors the request topic"
}
},
"required": [
"topic"
]
},
{
"properties": {
"type": {
"type": "string",
"description": "Item kind — 'runtime_api', shared shape with subtensor_lookup"
},
"name": {
"type": "string"
}
},
"required": [
"type",
"name"
]
}
],
"additionalProperties": true
}🟡subtensor_preferences(action, language, node_url, node_type, format, ...)
Get or set session preferences for language, node URL, and node type. Language affects field name casing (TypeScript=camelCase, others=snake_case) and code examples.
輸入結構描述
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"get",
"set"
],
"description": "Action to perform (default: 'get')"
},
"language": {
"type": "string",
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"description": "For set: preferred language. Affects field name casing in lookups (TypeScript=camelCase, others=snake_case) and code examples."
},
"node_url": {
"type": "string",
"description": "For set: WebSocket endpoint for generated code"
},
"node_type": {
"type": "string",
"enum": [
"lite",
"archive"
],
"description": "For set: 'lite' (current state) or 'archive' (historical patterns)"
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"preferences": {
"type": "string",
"description": "Preferences handle from subtensor_preferences(action=\"set\"). Carries language/node_url/node_type without a session. Explicit arguments on this call take precedence over the handle."
}
},
"required": []
}輸出結構描述
{
"type": "object",
"properties": {
"language": {
"type": [
"string",
"null"
]
},
"node_url": {
"type": [
"string",
"null"
]
},
"node_type": {
"type": "string"
},
"preferences_handle": {
"type": "string",
"description": "Pass back as `preferences` on later calls to reapply these."
}
},
"required": [
"node_type",
"preferences_handle"
],
"additionalProperties": true
}🟢subtensor_decode(hex, kind, pallet, name, type, ...)
Decode SCALE-encoded hex into labelled fields with RAO→TAO and hex→SS58 conversions applied. Omit pallet and name to identify an event or call from its two-byte (pallet index, item index) prefix — the usual case when you have bytes and want to know what they are.
輸入結構描述
{
"type": "object",
"properties": {
"hex": {
"type": "string",
"description": "SCALE-encoded bytes as hex, with or without a 0x prefix. Whitespace is ignored."
},
"kind": {
"type": "string",
"enum": [
"event",
"call",
"value"
],
"description": "What the bytes are: 'event' (default), 'call', or 'value' for a bare value of a given type"
},
"pallet": {
"type": "string",
"description": "Pallet of the event or call. Omit together with \"name\" to identify the item from the byte prefix instead."
},
"name": {
"type": "string",
"description": "Event or call name. Must be given together with \"pallet\"."
},
"type": {
"type": "string",
"description": "For kind=\"value\": the SCALE type to decode against, e.g. \"u64\", \"AccountId\", \"Vec<u16>\", \"Option<u32>\""
},
"format": {
"type": "string",
"enum": [
"text",
"json"
],
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
}
},
"required": [
"hex"
]
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"input": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"value": {},
"raw": {
"type": "string"
},
"display": {
"type": "string"
},
"conversion": {
"type": "string"
},
"error": {
"type": "string"
}
},
"required": [
"type",
"raw"
],
"additionalProperties": true
}
},
"trailing_bytes": {
"type": "string"
}
},
"required": [
"kind",
"input",
"fields",
"trailing_bytes"
],
"additionalProperties": true
}社群
證據