---
name: wallet-real-value
description: Check what an EVM wallet would actually sell for across 29 chains — full-balance sell quotes instead of spot × balance, fake airdrop / honeypot detection by simulated transfer, and claimable Clanker, Bankr/Doppler and Zora fees. Use when asked "what is this wallet worth", "is this token balance real", "can I sell this", "what can this wallet claim", or to value, audit or compare EVM wallets / ENS names.
---

# Wallet Real Value (walletcheck)

Values an EVM wallet at what selling each balance would **really pay**, across 29 chains. Same engine
as https://walletcheck.broke2builtai.com, served as the Apify Actor
[`eliai/wallet-real-value`](https://apify.com/eliai/wallet-real-value).

## When to use

- "What is 0x… / name.eth actually worth?" → `totalRealValueUsd` (not the paper number).
- "Is this token in my wallet real / sellable?" → per token `transferCheck` (`blocked` = fake balance
  or sell-blocking honeypot) and `sellableFraction`.
- "Does this wallet have fees or rewards to claim?" → `chains[].claims`.
- Comparing wallets, auditing a treasury, screening a counterparty, airdrop-farm cleanup.

## How to call it

Needs an Apify token (free account works) in `APIFY_TOKEN`. Price: **$0.02 per wallet scanned**;
bad input and failed scans are not charged. Typical wallet 30–60 s; airdrop-heavy wallets ~3 min.

```bash
curl -s -X POST "https://api.apify.com/v2/acts/eliai~wallet-real-value/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"addresses":["vitalik.eth"],"chains":[],"sellQuotes":true,"sellCheck":true,"claims":true}'
```

Returns a JSON array, one object per wallet. Synchronous calls time out after 300 s. For many
wallets, or big ones, start a run instead (`POST /v2/acts/eliai~wallet-real-value/runs`) and read
`/v2/datasets/{defaultDatasetId}/items` when it finishes.

**MCP:** with the Apify MCP server (`https://mcp.apify.com`), add the tool `eliai/wallet-real-value`
and call it with the same input.

### Input

| Field | Default | Notes |
|---|---|---|
| `addresses` | — | 0x addresses or ENS / Basenames, max 50 |
| `chains` | `[]` | Empty = every chain the wallet used + the 8 largest. Keys: `eth base arb op polygon bnb avax linea unichain zksync scroll blast gnosis celo worldchain ink soneium zora abstract apechain berachain monad ronin hyperevm shape lens story …` |
| `sellQuotes` | `true` | KyberSwap full-balance quote; finds the largest sellable slice when the full bag has no route |
| `sellCheck` | `true` | Simulated transfer from the holder; fake/unsellable → valued $0 |
| `claims` | `true` | Clanker fees + vaults, Bankr/Doppler fees, Zora vesting + protocol rewards |
| `maxQuotedTokensPerChain` | `40` | Most valuable first |

### Output (per wallet)

`address, ens, basename, totalRealValueUsd, totalPaperValueUsd, fakeOrUnsellableTokens,
claimableItems, topHoldings[], chainsScanned[], accountKind, reportUrl, chains[]` where each chain has
`native, tokensHeld, realValueUsd, paperValueUsd, fakeOrUnsellable, claims[], tokens[]` and each token
has `symbol, address, amount, priceUsd, paperValueUsd, buySideLiquidityUsd, quotedSellUsd,
sellableFraction, transferCheck, realValueUsd, flags, dexUrl`.

## How to report results

- Lead with **real value vs paper value**; the gap is the point. Never present paper value as worth.
- Name fake/unsellable tokens as such. Their paper value is not money.
- Quotes are estimates at scan time, not offers. Claims are amounts owed and are not counted in real value.
- Link `reportUrl` so a human can see the visual breakdown.
- Read-only: it never asks for keys, signatures or a wallet connection. Never ask a user for theirs.
