Agents

Portfolio Checkup

A health check for everything in a wallet.

Reads a wallet's holdings live from the chain, runs the CoinGraph check on each tracked token, and measures concentration, how many days each position would take to exit at normal volume, and contract risks. Returns a health grade from A to F with fixes ranked by impact.

When to use it #

  • A wallet app shows a health score for the user's holdings.
  • A person wants to know what to fix in a wallet.

Built for: Long-term holders · AI wallets

How it decides #

  • Reads the wallet's balances live and checks every tracked token.
  • Starts at 100 and deducts for concentration (stablecoins excluded), positions that fail or need caution, positions that would take more than 3 days to exit at 5% of daily volume, and value in untracked tokens.
  • Grades: A ≥ 85, B ≥ 70, C ≥ 55, D ≥ 40, F below. Lists the fixes that matter most.

Verdicts #

VerdictMeaning
AHealthy.
BGood, with something to improve.
CNeeds attention.
DSeveral problems.
FSerious problems.

Input #

POST/v1/agents/portfolio-checkup

Body

  • chain"eth" | "bsc" | "btc" | "sol" | "ada"required

    Chain: eth (Ethereum), bsc (BNB Chain), btc (Bitcoin), sol (Solana), ada (Cardano)
  • addressstringrequired

Examples #

Real runs, captured from the live service.

An Ethereum wallet

Request
curl -X POST "https://coingraph.ai/api/v1/agents/portfolio-checkup" \
  -H "content-type: application/json" \
  -d '{"chain":"eth","address":"0x9fc3da866e7df3a1c57ade1a97c9f00a70f010c8"}'
Response · real, captured 2026-10-06 23:24 UTC · long lists trimmed
{
  "object": "agent_run",
  "id": "run_0c795ae44b964a03d36e",
  "as_of": "2026-10-06T23:23:21.328Z",
  "data": {
    "run_id": "run_0c795ae44b964a03d36e",
    "agent": "portfolio-checkup",
    "agent_version": "1.0.0",
    "as_of": "2026-10-06T23:23:21.328Z",
    "verdict": "A",
    "summary": "Grade A (88/100) for $106.3K across 2 holdings. Top fix: 100% of the non-stablecoin value is in ETH. Concentrated, but in the most liquid asset in crypto.",
    "result": {
      "chain": "eth",
      "address": "0x9fc3da866e7df3a1c57ade1a97c9f00a70f010c8",
      "label": "unlabelled",
      "total_usd": 106257,
      "score": 88,
      "grade": "A",
      "concentration_hhi": 1,
      "stablecoin_share_pct": 0,
      "positions": [
        {
          "symbol": "ETH",
          "id": "ethereum",
          "usd": 106207.32,
          "share_pct": 100,
          "check": "proceed",
          "contract": "unassessed",
          "exit_days": 0,
          "evaluation_id": "eval_99ecc6f3e9b489b59ba5",
          "concern": null
        },
        {
          "symbol": "USDT",
          "id": "tether",
          "usd": 50.02,
          "share_pct": 0,
          "check": "caution",
          "contract": "ok",
          "exit_days": 0,
          "evaluation_id": "eval_9760e81355732b44ba8e",
          "concern": "4 transfer(s) ≥ $5M to exchanges in 24h (largest $20M → binance)"
        }
      ],
      "other_positions": [],
      "fixes": [
        "100% of the non-stablecoin value is in ETH. Concentrated, but in the most liquid asset in crypto.",
        "USDT is rated caution: 4 transfer(s) ≥ $5M to exchanges in 24h (largest $20M → binance)"
      ]
    },
    "reasons": [
      {
        "text": "100% of the non-stablecoin value is in ETH. Concentrated, but in the most liquid asset in crypto.",
        "source": "coingraph:evaluate + nownodes"
      },
      {
        "text": "USDT is rated caution: 4 transfer(s) ≥ $5M to exchanges in 24h (largest $20M → binance)",
        "source": "coingraph:evaluate + nownodes"
      }
    ],
    "warnings": [],
    "links": {},
    "disclaimer": "CoinGraph never trades, holds funds or gives financial advice. The caller decides.",
    "hash": "681a913da44d3e4ad20e5af91ad226aad1dba285bf315659bdc9de74d22c4efa",
    "verify_url": "https://coingraph.ai/api/v1/verify/run_0c795ae44b964a03d36e"
  },
  "sources": []
}

Result fields #

Inside data.result:

FieldContents
score, grade, total_usdThe health score and wallet value.
concentration_hhi, stablecoin_share_pctHow concentrated the wallet is.
positions[]Each holding: share, check, contract rating, days to exit.
fixes[]What to change, most important first.

Use it from Claude #

With CoinGraph connected (how), ask in plain words, or call the tool directly:

MCP tools/call
{
  "name": "run_portfolio_checkup",
  "arguments": {
    "chain": "eth",
    "address": "0x9fc3da866e7df3a1c57ade1a97c9f00a70f010c8"
  }
}

The proof for any run: https://coingraph.ai/proof/run_…