Subtensor blockchain reference — events, calls, storage, constants, errors for all 28 active pallets
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
SCALE-encoded bytes as hex, with or without a 0x prefix. Whitespace is ignored.
What the bytes are: 'event' (default), 'call', or 'value' for a bare value of a given type
Event or call name. Must be given together with "pallet".
For kind="value": the SCALE type to decode against, e.g. "u64", "AccountId", "Vec<u16>", "Option<u32>"
Response format: 'text' (compact, default) or 'json' (structured)
Pallet of the event or call. Omit together with "name" to identify the item from the byte prefix instead.
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.
| Argument | Type | Description |
|---|---|---|
| hex* | string | SCALE-encoded bytes as hex, with or without a 0x prefix. Whitespace is ignored. |
| kind | string | What the bytes are: 'event' (default), 'call', or 'value' for a bare value of a given type |
| name | string | Event or call name. Must be given together with "pallet". |
| type | string | For kind="value": the SCALE type to decode against, e.g. "u64", "AccountId", "Vec<u16>", "Option<u32>" |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| pallet | string | Pallet of the event or call. Omit together with "name" to identify the item from the byte prefix instead. |
{
"type": "object",
"required": [
"hex"
],
"properties": {
"hex": {
"type": "string",
"description": "SCALE-encoded bytes as hex, with or without a 0x prefix. Whitespace is ignored."
},
"kind": {
"enum": [
"event",
"call",
"value"
],
"type": "string",
"description": "What the bytes are: 'event' (default), 'call', or 'value' for a bare value of a given type"
},
"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": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"pallet": {
"type": "string",
"description": "Pallet of the event or call. Omit together with \"name\" to identify the item from the byte prefix instead."
}
}
}Understand Bittensor concepts, workflows, mechanisms, runtime APIs, runtime errors, extrinsic format, or get code examples.
| Argument | Type | Description |
|---|---|---|
| name | string | Topic-specific name: concept name ('staking'), workflow ID ('add-stake'), mechanism ID ('yuma-consensus'), runtime API name ('NeuronInfoRuntimeApi'), or item name for examples |
| topic* | string | What to explain |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| pallet | string | Pallet name — required for examples (e.g., 'SubtensorModule') |
| language | string | For examples: filter to one language (overrides session preference) |
| node_url | string | For examples: WebSocket endpoint override |
| enum_slug | string | For runtime_errors: get a specific error enum |
| item_type | string | For examples: type of item to generate code for |
| node_type |
Explore relationships, version history, removed items, changelogs, and migration guides between runtime versions.
| Argument | Type | Description |
|---|---|---|
| name | string | Item name (e.g., 'StakeAdded', 'add_stake', 'TotalStake') |
| type | string | Item type — for relationships (event/call/storage/error), for removed (all/pallet/event/call/storage/constant/error) |
| limit | number | Max items per page (default: 10) |
| topic* | string | What to explore |
| cursor | string | Pagination cursor from previous response |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| pallet | string | Pallet name (e.g., 'SubtensorModule') |
| version | number | For versions: look up a specific version |
| to_version | number | For changelog/migration: end version |
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.
| Argument | Type | Description |
|---|---|---|
| kind | string | For types: filter by type kind |
| role | string | Filter calls by required role (only applies when category=calls) |
| limit | number | Max items per page (default: 10) |
| cursor | string | Pagination cursor from previous response |
| domain | string | For mechanisms: filter by domain |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| pallet | string | 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'). |
| search | string | For types: search by name |
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.
| Argument | Type | Description |
|---|---|---|
| sub | string | number | 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. |
| urn | string | 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. |
| name | string | number | 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. |
| type | string | What kind of item to look up |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
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.
| Argument | Type | Description |
|---|---|---|
| action | string | Action to perform (default: 'get') |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| language | string | For set: preferred language. Affects field name casing in lookups (TypeScript=camelCase, others=snake_case) and code examples. |
| node_url | string | For set: WebSocket endpoint for generated code |
| node_type | string | For set: 'lite' (current state) or 'archive' (historical patterns) |
| preferences | string | 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. |
{
"type": "object",
"required": [],
"properties": {
"action": {
"enum": [
"get",
"set"
],
"type": "string",
"description": "Action to perform (default: 'get')"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"language": {
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"type": "string",
"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": {
"enum": [
"lite",
"archive"
],
"type": "string",
"description": "For set: 'lite' (current state) or 'archive' (historical patterns)"
},
"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."
}
}
}Search across all Subtensor pallets, events, calls, storage, constants, and errors by keyword.
| Argument | Type | Description |
|---|---|---|
| type | string | Filter by item type (default: all) |
| limit | number | Max results per page (default: 10, max: 50) |
| query* | string | Search query (e.g., 'stake', 'neuron', 'emission') |
| cursor | string | Pagination cursor from previous response |
| format | string | Response format: 'text' (compact, default) or 'json' (structured) |
| status | string | Filter by item status (default: 'active') |
{
"type": "object",
"required": [
"query"
],
"properties": {
"type": {
"enum": [
"all",
"event",
"call",
"storage",
"constant",
"error",
"type",
"runtime-api",
"mechanism",
"workflow",
"hyperparameter",
"learn",
"glossary",
"runtime-error"
],
"type": "string",
"description": "Filter by item type (default: all)"
},
"limit": {
"type": "number",
"description": "Max results per page (default: 10, max: 50)"
},
"query": {
"type": "string",
"description": "Search query (e.g., 'stake', 'neuron', 'emission')"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"status": {
"enum": [
"active",
"removed",
"all"
],
"type": "string",
"description": "Filter by item status (default: 'active')"
}
}
}| string |
| For examples: 'lite' (current state) or 'archive' (historical patterns) |
| preferences | string | 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. |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"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"
},
"topic": {
"enum": [
"concept",
"workflow",
"mechanism",
"runtime_api",
"runtime_errors",
"extrinsic_format",
"examples",
"monitor",
"event_group"
],
"type": "string",
"description": "What to explain"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"pallet": {
"type": "string",
"description": "Pallet name — required for examples (e.g., 'SubtensorModule')"
},
"language": {
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"type": "string",
"description": "For examples: filter to one language (overrides session preference)"
},
"node_url": {
"type": "string",
"description": "For examples: WebSocket endpoint override"
},
"enum_slug": {
"enum": [
"dispatch",
"token",
"arithmetic",
"transactional",
"trie",
"module"
],
"type": "string",
"description": "For runtime_errors: get a specific error enum"
},
"item_type": {
"enum": [
"storage",
"call",
"event"
],
"type": "string",
"description": "For examples: type of item to generate code for"
},
"node_type": {
"enum": [
"lite",
"archive"
],
"type": "string",
"description": "For examples: 'lite' (current state) or 'archive' (historical patterns)"
},
"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."
}
}
}| from_version | number | For changelog/migration: start version |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"name": {
"type": "string",
"description": "Item name (e.g., 'StakeAdded', 'add_stake', 'TotalStake')"
},
"type": {
"enum": [
"event",
"call",
"storage",
"error",
"all",
"pallet",
"constant"
],
"type": "string",
"description": "Item type — for relationships (event/call/storage/error), for removed (all/pallet/event/call/storage/constant/error)"
},
"limit": {
"type": "number",
"description": "Max items per page (default: 10)"
},
"topic": {
"enum": [
"relationships",
"emitters",
"modifiers",
"throwers",
"removed",
"changelog",
"migration",
"versions"
],
"type": "string",
"description": "What to explore"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"pallet": {
"type": "string",
"description": "Pallet name (e.g., 'SubtensorModule')"
},
"version": {
"type": "number",
"description": "For versions: look up a specific version"
},
"to_version": {
"type": "number",
"description": "For changelog/migration: end version"
},
"from_version": {
"type": "number",
"description": "For changelog/migration: start version"
}
}
}| context |
| string |
| For cli_flags/build_features: filter by usage context |
| category* | string | Category of items to list |
| flag_category | string | For cli_flags: filter by flag category (chain, sync, networking, rpc, metrics, runtime, subtensor) |
| include_removed | boolean | Include removed/historical items (default: false) |
{
"type": "object",
"required": [
"category"
],
"properties": {
"kind": {
"enum": [
"primitive",
"composite",
"variant",
"sequence",
"array",
"tuple",
"compact"
],
"type": "string",
"description": "For types: filter by type kind"
},
"role": {
"enum": [
"hotkey",
"coldkey",
"coldkey:owner",
"coldkey:subnet-owner",
"root",
"senate",
"any"
],
"type": "string",
"description": "Filter calls by required role (only applies when category=calls)"
},
"limit": {
"type": "number",
"description": "Max items per page (default: 10)"
},
"cursor": {
"type": "string",
"description": "Pagination cursor from previous response"
},
"domain": {
"enum": [
"consensus",
"emission",
"staking",
"registration",
"subnet",
"governance",
"identity",
"security",
"swap",
"data",
"randomness"
],
"type": "string",
"description": "For mechanisms: filter by domain"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"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')."
},
"search": {
"type": "string",
"description": "For types: search by name"
},
"context": {
"enum": [
"dev",
"production",
"both"
],
"type": "string",
"description": "For cli_flags/build_features: filter by usage context"
},
"category": {
"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"
],
"type": "string",
"description": "Category of items to list"
},
"flag_category": {
"type": "string",
"description": "For cli_flags: filter by flag category (chain, sync, networking, rpc, metrics, runtime, subtensor)"
},
"include_removed": {
"type": "boolean",
"description": "Include removed/historical items (default: false)"
}
}
}| pallet |
| string |
| Pallet name — required for event/call/storage/constant/error lookups (e.g., 'SubtensorModule') |
| address | string | 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. |
| include | string | For pallet lookup: filter to a specific item type with descriptions |
| language | string | Field name casing for your language. TypeScript shows camelCase (tickLow), others show snake_case (tick_low). Overrides session preference. |
| preferences | string | 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. |
| include_history | boolean | Include full argument signatures for each version range (events/calls only) |
| include_removed | boolean | Include removed/historical items (default: false) |
{
"type": "object",
"required": [],
"properties": {
"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."
},
"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."
},
"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."
},
"type": {
"enum": [
"pallet",
"event",
"call",
"storage",
"constant",
"error",
"type",
"runtime_api",
"rpc_method",
"account",
"precompile",
"cli_flag",
"build_feature"
],
"type": "string",
"description": "What kind of item to look up"
},
"format": {
"enum": [
"text",
"json"
],
"type": "string",
"description": "Response format: 'text' (compact, default) or 'json' (structured)"
},
"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."
},
"include": {
"enum": [
"events",
"calls",
"storage",
"constants",
"errors"
],
"type": "string",
"description": "For pallet lookup: filter to a specific item type with descriptions"
},
"language": {
"enum": [
"typescript",
"python-bt",
"python-sub",
"rust"
],
"type": "string",
"description": "Field name casing for your language. TypeScript shows camelCase (tickLow), others show snake_case (tick_low). Overrides session preference."
},
"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."
},
"include_history": {
"type": "boolean",
"description": "Include full argument signatures for each version range (events/calls only)"
},
"include_removed": {
"type": "boolean",
"description": "Include removed/historical items (default: false)"
}
}
}