putty
MCPCommunityHolders

community_verify_wallet

Check a wallet against a community's token: read its `balanceOf` and answer with the balance and the holder census. Free — it spends no credits, takes no signature, and posts nothing to any chat. **A wallet with a balance of zero is an error, not a `verified: false`.** That refusal is the product here, so it comes back as an `isError` carrying the sentence the chat would have shown, rather than a 200 the caller has to parse. A chain read that could not answer is a SECOND, different error, and the two are deliberately distinguishable: 'you are not a holder' is an answer and 'we could not check' is a failure, and collapsing them would show a member an error where they should have seen a refusal. `holders` is `null` when the census needs an indexed transfer log this deployment does not own — that is NOT the same as `"0"`, which is counted-and-none. The answer is stored against the caller, so a repeated check of the same wallet is not a fresh chain read on every keystroke. This tool does NOT post to Discord or Telegram: running a bot's command dispatcher, posting a countdown, or auto-posting a receipts update all speak to a third party's service on the user's behalf, and those are not actions a tool call may take unasked.

Check a wallet against a community's token: read its balanceOf and answer with the balance and the holder census. Free — it spends no credits, takes no signature, and posts nothing to any chat. A wallet with a balance of zero is an error, not a verified: false. That refusal is the product here, so it comes back as an isError carrying the sentence the chat would have shown, rather than a 200 the caller has to parse. A chain read that could not answer is a SECOND, different error, and the two are deliberately distinguishable: 'you are not a holder' is an answer and 'we could not check' is a failure, and collapsing them would show a member an error where they should have seen a refusal. holders is null when the census needs an indexed transfer log this deployment does not own — that is NOT the same as "0", which is counted-and-none. The answer is stored against the caller, so a repeated check of the same wallet is not a fresh chain read on every keystroke. This tool does NOT post to Discord or Telegram: running a bot's command dispatcher, posting a countdown, or auto-posting a receipts update all speak to a third party's service on the user's behalf, and those are not actions a tool call may take unasked.

Input

The tool takes a single JSON object. Every field, its type, and an example are on the generated reference at GET /mcp/tools, under this tool's name.

Calling it

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": { "name": "community_verify_wallet", "arguments": {} }
}

Put your arguments in place of the empty object. A call that fails comes back as a normal result carrying isError: true and a message naming what went wrong, not as a JSON-RPC protocol error.

Notes

The category is Community, subcategory Holders. The full request and response shape, and a live playground, live on the generated reference at GET /mcp/tools.

On this page