Subtensor MCP

Subtensor blockchain reference — events, calls, storage, constants, errors for all 28 active pallets

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
97%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,330Token(工具定義)
~7.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.38%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 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
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本7 個工具