Skip to main content
Glama

get_nft_portfolio

Read-onlyIdempotent

List NFT collections owned by a wallet across EVM chains and Solana, showing floor prices and total floor value with chain-level error handling.

Instructions

List the NFT collections a wallet owns across EVM chains and/or Solana, with per-collection floor price (EVM only in v1) and a rolled-up total floor value. EVM source: Reservoir. Multi-chain fan-out via Promise.allSettled so a per-chain rate-limit or 5xx degrades to a coverage[].errored flag rather than aborting the whole call. Solana source (issue #433): Helius DAS getAssetsByOwner — pass solanaWallet (base58). Requires a Helius API key (free tier; configure via set_helius_api_key in demo mode or vaultpilot-mcp-setup for persistence). Returns per-collection rows without floor pricing in v1; Magic Eden / Tensor floor integration is tracked as a separate follow-up. At least one of wallet (EVM) / solanaWallet (Solana) must be supplied. Each row aggregates per-collection (one row per (chain, contract / collection-mint)), summing tokenCount across token IDs the wallet holds. Optional filters (EVM-only): minFloorEth drops dust / spam / scam collections; collections[] whitelists a specific contract set. Results sorted by totalFloorUsd descending; Solana rows tail-sort. NFT signing actions (list, sweep, accept-bid, transfer) deferred — separate plan; biggest UX risk because of approval / proxy patterns. Caveat surfaced in notes[]: floor != liquidation; totalFloorUsd is an upper-bound, not what the wallet would net selling everything immediately. Optional RESERVOIR_API_KEY env var avoids the anonymous-tier rate limit on multi-chain fan-out. Issue #433 Solana follow-ups (separate issues): get_nft_history Solana support, get_nft_collection Solana support, Solana floor pricing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
walletNoEVM wallet to enumerate. Reservoir is the source of truth; the tool fans out one HTTP call per requested chain in parallel. Optional iff `solanaWallet` is provided — at least one of `wallet` / `solanaWallet` must be supplied.
solanaWalletNoIssue #433 — Solana wallet to enumerate via the Helius DAS `getAssetsByOwner` method. Requires a Helius API key (free tier is enough); falls back to a structured setup hint when only the public Solana mainnet endpoint is configured (DAS is not exposed there). v1 returns per-collection rows without floor pricing — Magic Eden / Tensor floor is a separate follow-up. Optional iff `wallet` is provided.
chainsNoSubset of supported EVM chains to scan (ethereum / arbitrum / polygon / base / optimism). Omit to scan all five. Per-chain errors degrade rather than abort the whole call — the response's `coverage` field flags which chains errored. Ignored when only `solanaWallet` is set.
minFloorEthNoDrop NFTs whose collection floor is below this value (in the chain's native asset). Useful for filtering out airdrop / spam / scam collections that pollute the headline. Default: no filter. Solana rows have no floor pricing in v1 (#433 deferred), so this filter only affects EVM rows.
collectionsNoWhitelist a specific set of collection contract addresses. When supplied, ALL other collections are dropped. Useful for spot-checking a particular collection. Mutually composable with `minFloorEth` (both filters apply). EVM-only.
Behavior4/5

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

Very detailed on behaviors: multi-chain fan-out with partial errors, floor price as upper bound, Solana v1 limitations, API key requirements. No contradiction with readOnlyHint annotation.

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

Conciseness3/5

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

Overly verbose with technical implementation details (Promise.allSettled, issue numbers) that could be omitted. Effective but could be more concise.

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

Completeness5/5

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

Thorough coverage of return format, error handling, dependencies, and caveats. Compensates for lack of output schema with rich behavioral description.

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

Parameters5/5

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

Adds significant context beyond schema: explains defaults, interactions like chains ignored for Solana-only, and EVM-only filters. Full schema coverage already present.

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?

Clearly states it lists NFT collections a wallet owns across EVM and Solana chains with floor prices. Distinguishes from sibling tools like get_nft_collection and get_nft_history.

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 when to use (portfolio overview), mentions alternatives and deferred signing actions, and explains prerequisites like API keys.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/szhygulin/vaultpilot-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server