Skip to main content
Glama

Get holders of a resource

get_resource_holders
Read-only

Lists the holders of any token or NFT collection, largest first, with concentration (top holder, top 10) and holder kinds (accounts, pools, lockers, components). By default the first page (100); with "all": true every page (up to 20,000 holders). Filters: kinds, minAmount, exclude. For an airdrop to these holders use plan_holder_distribution.

Input Schema

NameRequiredDescriptionDefault
allYesRead every page instead of only the largest 100 holders
kindsNoKeep only these holder kinds (default: all)
excludeNoAddresses to leave out
networkYesRadix network: "mainnet" (production) or "stokenet" (testnet)mainnet
minAmountNoDrop holders below this amount
resourceAddressYesResource address (resource_rdx1…)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / exclude / items / maxLength
      Added value: +200
    • addedInput schema / properties / exclude / maxItems
      Added value: +1000
  2. Changed5 schema fields changed
    • addedInput schema / properties / all
      Added value: +{
      +  "default": false,
      +  "description": "Read every page instead of only the largest 100 holders",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / exclude
      Added value: +{
      +  "description": "Addresses to leave out",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / kinds
      Added value: +{
      +  "description": "Keep only these holder kinds (default: all)",
      +  "items": {
      +    "enum": [
      +      "account",
      +      "pool",
      +      "locker",
      +      "validator",
      +      "component",
      +      "other"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / minAmount
      Added value: +{
      +  "description": "Drop holders below this amount",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "resourceAddress",
      -  "network"
      -]New value: +[
      +  "resourceAddress",
      +  "all",
      +  "network"
      +]
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declaring safety, the description adds real behavioral context: pagination default, the 20,000-holder cap, sort order, and what aggregate data accompanies the list. It could say more about rate limits or pagination mechanics, so 4 not 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense, front-loaded paragraph: purpose and ordering first, then pagination, then filters, then the sibling redirect. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the returned aggregates (top holder, top 10, holder kinds). For a read-only, six-parameter tool this is nearly complete; only edge-case behavior (empty results, cap exceeded) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries the per-parameter documentation. The description adds meaning beyond it by tying all:true to the concrete 20,000 cap and noting the filter set (kinds, minAmount, exclude) in one place, though it doesn't elaborate on filter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (lists holders of a token or NFT collection) plus ordering (largest first) and the extra data returned (concentration, holder kinds). An agent can distinguish it from sibling read tools like get_nft_data or lookup_entity without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes the default behavior (first page of 100) and the all:true escalation (up to 20,000), and routes the agent to plan_holder_distribution for the airdrop use case. This is a clear when-to-use and alternative-naming statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources